簡體   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