为什么重写onCreate(Bundle,PersistableBundle)不起作用?

时间:2018-01-26 18:57:50

标签: java android android-studio intellij-idea android-activity

目前正在进行Android开发,但是我错误地覆盖onCreate(Bundle, PersistableBundle)而不是简单onCreate(Bundle),因此活动无法启动。我通过使用正确的重载来修复它,这很难找到,但这是另一回事。

我的问题是:为什么没有这个工作?为什么重写onCreate(Bundle,PeristableBundle)不起作用,即为什么不调用它以及为什么覆盖其他重载会起作用?

3 个答案:

答案 0 :(得分:3)

onCreate(Bundle)是您将始终实施的常用方法。

只有在您设置persistableMode时才会调用

onCreate(Bundle, PersistableBundle),文档说:

  

void onCreate (Bundle savedInstanceState, PersistableBundle persistentState)

     

与onCreate(android.os.Bundle)相同,但要求创建的那些活动   将persistableMode属性设置为persistAcrossReboots。

有关persistableMode的更多信息:https://developer.android.com/reference/android/R.attr.html#persistableMode

答案 1 :(得分:0)

即使您创建了将persistableMode属性设置为persistAcrossReboots的活动,因为它已正确提及。在Android 21中添加了带有第二个参数的onCreate()版本。因此它仍然无法启动!

以下是docs

答案 2 :(得分:0)

以下是使用OnCreate()的示例 在您的BaseActivity类中作为摘要。 我试图给出一个真实的项目代码快照,以帮助您在项目中使用。

public abstract class BaseActivity extends AppCompatActivity {

@Override
public void onCreate(@Nullable Bundle savedInstanceState, @Nullable PersistableBundle persistentState) {
    super.onCreate(savedInstanceState, persistentState);

    if (getSupportActionBar() != null) {
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    }
}

public void showNetworkError() {
    Toast.makeText(this,
            R.string.error_network,
            Toast.LENGTH_SHORT)
            .show();
}

}