标签: oncreate

onAttachedToWindow和onStart之间的确切区别是什么?

我有时会看到人们使用这种Activity.onAttachedToWindow方法,但我个人从未使用过它.在阅读它的文档时,它在我看来就像它几乎一样onStart().

我假设的一件事是: onAttachedToWindowonCreate() onStop之后调用之前调用.

我对这个假设是对的吗?什么是两者的代表什么,你什么时候使用哪个?

lifecycle android oncreate android-activity

9
推荐指数
1
解决办法
2万
查看次数

OnCreate方法不断被重复调用


更新:谢谢大家试图帮我解决这个bug.我仍然不确定原因,我能够回滚到之前的提交并从那里继续开发.之前的提交确实显示了相同的错误,但是在我评论之后 button.performClick()它就消失了.奇怪的是,这不适用于最近的提交.

我仍然不明白这个错误,并希望在帮助确定根本原因方面提供更多帮助.我最担心的是无意中重新介绍它.


我有一个我见过的最疯狂的错误.

一遍又一遍地调用OnCreate方法,冻结我的应用程序并给我一点点闪烁.然后唯一的解决方案是退出到主屏幕并强制退出设置菜单中的应用程序.

以下是详细信息:

  1. 申请开始(主要活动)
  2. 主要活动调用第二个活动
  3. 第二个Activity调用onCreate,正常设置
  4. 第二个活动随机决定退出onCreate < - 我认为这正在发生什么
  5. 第二个活动的onCreate再次被调用.它永远不会返回主要活动.

我运行了一个调试器,看来第二个活动成功完成onComplete/onResume序列,然后决定退出并重启.

以前有没有人听说过这种行为?

我没有注意到任何异常被抛出.此外,在调试过程中,我确实继续检查那些您认为是静默失败的位置.(这是我用打印语句乱丢之前的旧代码)

更新:当试图停止该过程时,我必须打开飞行模式.这意味着它与此代码块有关(第二个活动)

else if (Network.haveNetworkConnection(Login.getContext()) && Login.checkClientId())
        {...}
Run Code Online (Sandbox Code Playgroud)

没有互联网,它将触及else语句,并且不会显示此行为.

码:

主活动的onResume(),我在其中调用第二个活动:

    @Override
    public void onResume()
    {
        super.onResume();

        //Check If logged in, else go to login page
        Login.setContext(getApplicationContext());

        //Reset Notification Number
        GCMIntentService.cancelNotifications();

        /** GO TO LOGIN **/
        if(!Login.isLoggedIn())
        {
            //If user is not logged in, open login page
            System.out.println("RESUMING MAIN AND STARTING LOGIN INTENT");
            Intent intent = new Intent(ActivityMain.this, ActivityLogin.class);
            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(intent); …
Run Code Online (Sandbox Code Playgroud)

android oncreate

9
推荐指数
2
解决办法
3316
查看次数

屏幕方向改变后,dialogFragment显然没有任何调用

这里有部分活动屏幕方向改变:

protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    et = (EditText) findViewById(R.id.editText1);

    et.setOnLongClickListener(new View.OnLongClickListener() 
    {
        @Override
        public boolean onLongClick(View v) 
        {
            Fragment1 dialogFragment = new Fragment1();
            dialogFragment.show(getFragmentManager(), null);
            dialogFragment.setTextDialog(et.getText().toString());
            return true;                
        }
    });        
}
Run Code Online (Sandbox Code Playgroud)

显然,似乎在DialogFragment中出现的对话框应该出现在onLongClick之后的editText上(我知道当屏幕方向改变时Activity重新启动,但它不应该像第一次创建时那样正常启动? )

我的问题:当我至少打开一次对话框并关闭它时,屏幕方向改变之后我再次在屏幕上显示对话框,就像我长按了editText一样.

我不清楚为什么会这样.

我还附加了对话框片段的结构:

public Dialog onCreateDialog(Bundle savedInstanceState) 
{
    final Dialog dialog = super.onCreateDialog(savedInstanceState);
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    LayoutInflater adbInflater = LayoutInflater.from(getActivity());

    View eulaLayout = adbInflater.inflate(R.layout.dialog_crypt, null);     
    Button btn_OK = (Button) eulaLayout.findViewById(R.id.btnOK);
    dialog.setContentView(eulaLayout);

    final EditText et = (EditText)eulaLayout.findViewById(R.id.editText2);
    et.setText(textDialog);

    if(et.length()>0)
    {
        et.setText(et.getText().toString() +  " ");
    }

    et.setSelection(et.length());

    btn_OK.setOnClickListener( …
Run Code Online (Sandbox Code Playgroud)

android screen-orientation oncreate android-dialogfragment

9
推荐指数
2
解决办法
2635
查看次数

Android:在创建时设置随机颜色背景

我想要的是当我加载我的应用程序时,从一个预定义的字符串列表中随机地获得某个彩色背景,这些字符串存储在名为colors的值xml文件中.

我目前拥有的是使用eclipse中的gui编辑器通过字符串颜色代码定义的背景颜色.

对于我的生活,无法弄清楚如何让背景随机选择9个字符串中的一个并在每次激活活动时显示它.

对此的指导将是非常宝贵的.

random android background colors oncreate

9
推荐指数
2
解决办法
2万
查看次数

为什么Bundle对象在onCreate()上始终为null?

我正在尝试进入Android编程,因为我从一本书中拿了一些例子.在这些示例中要求输入以下代码:

public class ExemploCicloVida extends Activity {

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        Log.i(TAG, getClassName() + " onCreate() called on: " + icicle);

        TextView t = new TextView(this);
        t.setText("Exemplo de ciclo de vida de uma Activity.\nConsulte os logs no LogCat");
        setContentView(t);
    }
}
Run Code Online (Sandbox Code Playgroud)

我想知道为什么Bundle对象在这种情况下总是为null.

android bundle oncreate

8
推荐指数
2
解决办法
2万
查看次数

我可以在oncreate方法之外使用setContentView吗?

我见过很多人告诉你可以在oncreate方法之外设置setContentView,但我没有找到任何例子.现在,当我尝试使用setContentView时,我的应用程序崩溃了.这是我的源代码:

AlarmActivity.java:

package com.alarm.example;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.RelativeLayout;

public class AlarmActivity extends Activity{
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Button buton = new Button(this);
        buton.setId(101);
        buton.setText("New alarm");
        buton.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
        RelativeLayout layout1 = new RelativeLayout(this);  
        layout1.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));  
    layout1.addView(buton);  
    setContentView(layout1); 

    Button nou =(Button)findViewById(101);
    nou.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v){
            New_ala nou1=new New_ala();
            nou1.nou_alarma();
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

New_ala.java:

package com.alarm.example;

public class New_ala extends AlarmActivity{
public void nou_alarma() {
setContentView(R.layout.timepicker);        
} …
Run Code Online (Sandbox Code Playgroud)

java android oncreate

8
推荐指数
2
解决办法
1万
查看次数

将全屏设置为onCreate

我只能在onCreate方法中设置我的活动到全屏(在setContentView之前)?

有没有什么方法可以在onCreate之外设置为全屏?

谢谢

android screen fullscreen oncreate

8
推荐指数
1
解决办法
4403
查看次数

onCreate,onCreateOptionsMenu,onResume,执行的顺序是什么?

如果之前被问到这个问题,我很抱歉...无论如何,标题是什么,onCreateOptionsMenu何时执行?在onResume之前或之后?

在我的应用程序中,当活动首次运行/打开时,订单将是onCreate - > onResume - > onCreateOptionsMenu

但是如果我改变设备的方向,它会自动调用onDestroy,因此活动将被重新创建,在这种情况下,订单将是onCreate - > onCreateOptionsMenu - > onResume

我现在很困惑......任何人都可以对此作出解释吗?

android onresume oncreate android-activity oncreateoptionsmenu

8
推荐指数
1
解决办法
8556
查看次数

空活动的setContentView上的StrictMode磁盘读取违规

我最近尝试使用StrictMode但有一个奇怪的侵犯,所以我尝试建立一个新的 "空活动"项目(在Android Studio),并添加如下(中记载的应用程序类在这里):

public class TestApplication extends Application {

    @Override
    public void onCreate() {
        setStrictMode();
        super.onCreate();

    }

    private void setStrictMode() {
        if (BuildConfig.DEBUG) {
            StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
                    .detectAll()
                    .penaltyLog()
                    .build());
            StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
                    .detectLeakedSqlLiteObjects()
                    .detectLeakedClosableObjects()
                    .penaltyLog()
                    .penaltyDeath()
                    .build());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我在这个空项目中遇到同样的问题:
StrictMode policy violation; ~duration=165 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=65599 violation=2

堆:

at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1440)
at java.io.UnixFileSystem.getBooleanAttributes(UnixFileSystem.java:241)
at java.io.File.isDirectory(File.java:837)
at dalvik.system.DexPathList$Element.toString(DexPathList.java:634)
at java.lang.String.valueOf(String.java:2827)
at java.util.Arrays.toString(Arrays.java:4511)
at dalvik.system.DexPathList.toString(DexPathList.java:194)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:126)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at android.view.LayoutInflater.createView(LayoutInflater.java:606) …
Run Code Online (Sandbox Code Playgroud)

android oncreate android-instant-run android-strictmode

8
推荐指数
1
解决办法
839
查看次数

Crashlytics 崩溃报告提到 XposedBridge

我昨天发布了一个 Android 应用程序的更新,今天我在 Crashlytics 中看到了一些崩溃日志:

   Fatal Exception: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.myapp/com.example.myapp.MyWebViewActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
          at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2665)
          at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)
          at android.app.ActivityThread.-wrap12(ActivityThread.java)
          at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)
          at android.os.Handler.dispatchMessage(Handler.java:102)
          at android.os.Looper.loop(Looper.java:154)
          at android.app.ActivityThread.main(ActivityThread.java:6119)
          at java.lang.reflect.Method.invoke(Method.java)
          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
          at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:107)

   Caused by java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
          at com.example.myapp.MyWebViewActivity.onCreate(MyWebViewActivity.java:77)
          at android.app.Activity.performCreate(Activity.java:6679)
          at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
          at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618)
          at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)
          at android.app.ActivityThread.-wrap12(ActivityThread.java)
          at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)
          at android.os.Handler.dispatchMessage(Handler.java:102)
          at …
Run Code Online (Sandbox Code Playgroud)

android android-intent oncreate crashlytics xposed

8
推荐指数
1
解决办法
1517
查看次数