目前正在进行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();
}
}