【问题标题】:Why does overriding onCreate(Bundle, PersistableBundle) not work?为什么覆盖 onCreate(Bundle, PersistableBundle) 不起作用?
【发布时间】:2018-07-06 04:13:58
【问题描述】:

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

我的问题是:为什么这不起作用?为什么覆盖 onCreate(Bundle, PeristableBundle) 不起作用,即为什么不调用它以及为什么覆盖另一个重载起作用?

【问题讨论】:

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


【解决方案1】:

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

}

【讨论】:

    【解决方案2】:

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

    这里是docs

    【讨论】:

    • 哇!人们回答这些问题的速度如此之快,以至于我有时会觉得自己在与其他用户竞争。
    • @CodigosTutoriales 这才是真正的男人!但这对Op有好处,不同的意见,你不需要等待几天才能找到解决方案
    【解决方案3】:

    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

    【讨论】:

    • 任何想法如何启用此功能?
    猜你喜欢
    • 1970-01-01
    • 2019-12-07
    • 1970-01-01
    • 2012-06-04
    • 1970-01-01
    • 2013-12-27
    • 1970-01-01
    • 2020-08-11
    相关资源
    最近更新 更多