繁体   English   中英

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

[英]Why does overriding onCreate(Bundle, PersistableBundle) not work?

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

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

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

onCreate(Bundle, PersistableBundle)仅在您设置persistableMode时才会被调用,如文档所述:

void onCreate (Bundle savedInstanceState, PersistableBundle persistentState)

与 onCreate(android.os.Bundle) 相同,但会调用那些使用属性 persistableMode 设置为 persistAcrossReboots 创建的活动。

更多关于persistableModehttps ://developer.android.com/reference/android/R.attr.html#persistableMode

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

这是文档

这是在 BaseActivity 类中使​​用 OnCreate() 作为抽象的示例。 我正在尝试提供一个真实的项目代码快照,以帮助您在项目中使用。

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();
}

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM