Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 未调用onCreate_Android_Android Activity - Fatal编程技术网

Android 未调用onCreate

Android 未调用onCreate,android,android-activity,Android,Android Activity,我有两个活动:第一个活动用户点击一个按钮,启动第二个活动。第二项活动完成所有工作 我启动了第二个活动,如下所示,它位于onClickListener内部类中,我尝试使用(FirstActivity.this,Simple.Class)显式调用它,但同样的情况也发生了 Intent test = new Intent(arg0.getContext(),Simple.class); startActivity(test); 在模拟器上,我看到屏幕移动,就像调用第二个活动一样,但我

我有两个活动:第一个活动用户点击一个按钮,启动第二个活动。第二项活动完成所有工作

我启动了第二个活动,如下所示,它位于onClickListener内部类中,我尝试使用(FirstActivity.this,Simple.Class)显式调用它,但同样的情况也发生了

    Intent test = new Intent(arg0.getContext(),Simple.class);
    startActivity(test);
在模拟器上,我看到屏幕移动,就像调用第二个活动一样,但我得到的只是一个黑屏,但没有从我的布局加载任何内容。我查看了logcat,确实看到一些绑定线程失败的消息。这是我的第二个活动中的onCreate函数,但我没有从屏幕或logcat中得到任何结果,显示调用了日志函数:

    public void onCreate(Bundle savedState)
    {
       Log.d("SimpleActivity","OnCreate Started");

       super.onCreate(savedState);
   setContentView(R.layout.simple);

       Log.d("SimpleActivity","OnCreate Ended");
    }

注意:我在上面的代码中使用super.OnCreate(savedState)调用了OnCreate()中的基构造函数。

您应该@Override OnCreate并在其中添加
super.OnCreate()

@Override
public void onCreate(Bundle savedState)
{
   super.onCreate(savedState);

   Log.d("SimpleActivity","OnCreate Started");
   setContentView(R.layout.simple);
   Log.d("SimpleActivity","OnCreate Ended");
}

您需要调用
super.onCreate(savedState)
方法。看一看


如果活动从未被销毁,onCreate可能不会被调用, 如果由于某种原因某个活动挂起,下次实例化它时不会重新创建它,而是继续

至少这就是我现在在代码中要处理的。。。活动的生命周期似乎是一个很好的逻辑解释。。然而,99%的时间我都依赖于onCreate在启动Activity时被调用,它不会让我失望


编辑:当然,这是因为我在退出活动时没有调用finish()。Doh.

这与此特定问题无关,但在清单文件中未声明活动时也可能发生这种情况)

发生在我身上的是我重写了错误的
onCreate
方法。当我真的需要重写受保护的void onCreate(@Nullable Bundle savedInstanceState)时,我正在重写公共void onCreate(Bundle savedInstanceState,PersistableBundle persistentState)。也许这可以帮助别人

如果您的方法属于AppCompatActivityActivity,请小心

这取决于您对您的类实现了什么

如果要添加生命周期或任何重写方法,建议您按
CTRL+O
或do
code>Override方法
,您可以在那里看到该方法所属的位置


从清单中删除android:launchMode=“singleTask”

我的案例

(1) mainActivity->(2)打开适配器-startActivity->(3)未触发mainActivity onCreate()

我通过添加finish()解决了这个问题。在主要活动中

按照以下步骤检查您的应用程序。

1.您是否覆盖了正确的方法?如果不重写下面的方法,则在启动Tactivity时将触发此方法

protected void onCreate(Bundle savedInstanceState) { 
   super.onCreate(savedInstanceState);
2.确保已在manifest.xml中注册该活动

2.1您的活动是否有android:launchMode=“singleInstance”? (如果您的应用程序不需要单独实例,请考虑删除。 但我的案例需要singleinstance,因此我进入下一步)

  • 使用finish()

  • 为什么我们需要使用“finish()”?

    屏幕A->单击A上的按钮->屏幕B->单击B上的按钮->屏幕A以及从屏幕B获得的一些新数据

    如果不调用finish()方法(在按钮中),则表示A仍在后台 甚至你也看到了屏幕B

    因此,当您在屏幕B上触发startActivity时,它只是简单地显示正在运行的屏幕

    但是,如果使用finish()方法(在按钮中),当您转到B屏幕时,
    它会破坏A屏幕,因此当您通过单击B方法(“StartActivity”)返回到屏幕时,它会创建一个屏幕并触发onCreate()方法。

    再发布一些代码,以便我们可以看到arg0是什么。你可能不应该用那些东西。使用YourActivity.this作为传递到新意图的上下文。您解决了这个问题吗?视图中是否有直接实例化的片段?这个答案为我提供了解决问题的线索。在我的例子中,活动是在对象标志的条件下完成的,这被放在处理程序的可运行代码中。但该对象在执行runnable之前变为null。谢谢你。这就是我的情况,直接转到onPause,一旦创建没有被呼叫。谢谢,真的是这样!这只愚蠢的虫子花了我至少一个小时才找到。。。该死的,
    public void onCreate
    !oncreate(&输入land me here lol..auto complete应该会让工作更轻松,不是吗?感谢谷歌将“void oncreate(Bundle savedInstanceState,persistable Bundle persistentState)”作为代码完成的默认方法。grrrrrrrrr感谢谷歌让我们能够专注于应用程序开发:D
    protected void onCreate(Bundle savedInstanceState) { 
       super.onCreate(savedInstanceState);
    
     public void openSearch(View view) {
     Intent intent = new Intent(this, BookInfoActivity.class);
     intent.putExtra(...);
     startActivity(intent);
     finish(); // add like this.}