目前正在进行Android开发,但是我错误地覆盖onCreate(Bundle, PersistableBundle)
而不是简单onCreate(Bundle)
,因此活动无法启动。我通过使用正确的重载来修复它,这很难找到,但这是另一回事。
我的问题是:为什么没有这个工作?为什么重写onCreate(Bundle,PeristableBundle)不起作用,即为什么不调用它以及为什么覆盖其他重载会起作用?
答案 0 :(得分:3)
onCreate(Bundle)
是您将始终实施的常用方法。
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();
}
}