簡體   English   中英

返回活動的片段

[英]Return to a activity's fragment

我有一個活動(MainActivity),它具有一個導航抽屜,並且可以顯示2個片段(片段A和B),一次顯示一個。 (此活動是android studio創建的帶有導航抽屜的默認活動)

當我在抽屜上選擇片段B時,操作欄菜單將更新為顯示特定於片段B的按鈕(按鈕P)。

按鈕P以明確的意圖打開一個獨立的活動(IndependentActivity),對此活動我執行數據庫操作,完成此活動后,請返回MainActivity。

問題是:完成IndependentActivity后,將顯示MainActivity, 它顯示的是片段A而不是片段B,后者是調用意圖轉到IndependentActivity的片段。

如何通過顯示引發該動作進行另一個活動的片段來解決此問題? 有什么方法可以保存出現的片段?

基本上,您要做的是:

  • 輸入IndependentActivity時,保存MainActivity的狀態
  • 退出IndependentActivity時重新加載MainActivity的狀態

一個簡單的實現可以是:

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
    // Save which fragment that is in the view when entering another activity
    savedInstanceState.putString("fragment", "fragmentB");
    super.onSaveInstanceState(savedInstanceState);
}

片段B可以用一個字符串替換,該字符串告訴應用程序當前片段。

回到活動之后,您要:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if( savedInstanceState != null ) {
         // Get which fragment that was active when you left the activity
         savedInstanceState.getString("fragment");

         // Programatically select the fragment here
    }
}

您可以在此處閱讀有關保存實例狀態的更多信息:

http://developer.android.com/training/basics/activity-lifecycle/recreating.html

我將留給您以編程方式選擇片段。 希望對您有所幫助!

我發現我遇到了與此相同的問題: https : //stackoverflow.com/a/29464116/2325672

返回的后退箭頭不起作用,因此重置了活動的片段,並且模擬器的后三角效果很好。

將此代碼添加到IndependentActivity可以為我工作:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (item.getItemId()== android.R.id.home) {
        Intent intent = NavUtils.getParentActivityIntent(this);
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        NavUtils.navigateUpTo(this, intent);
        return true;
    }
    return super.onOptionsItemSelected(item);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM