为什么覆盖onCreate(Bundle,PersistableBundle)不起作用



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

我的问题是:为什么这不起作用?为什么覆盖onCreate(Bundle,PeristableBundle(不起作用,即为什么不调用它,为什么覆盖其他重载有效?

onCreate(Bundle)

您将始终实现的常用方法。

仅当您设置持久模式时,才会调用onCreate(Bundle, PersistableBundle),如文档所述:

void onCreate (Bundle savedInstanceState, PersistableBundle persistentState)

与onCreate(android.os.Bundle(相同,但需要创建的活动 属性持久模式设置为持久跨重新启动。

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

即使您

创建的活动属性持久模式设置为持久交叉重新启动,因为它被正确提及。onCreate()带有第二个参数的版本是在 Android 21 中添加的。所以它仍然无法启动!

这是文档

下面是使用 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();
}

}

相关内容

  • 没有找到相关文章

最新更新