2016-10-07 87 views
1

我有幾個由活動維護的片段。該應用程序從「首頁」片段開始,當我轉到「片段A」,然後轉到設置活動並從設置活動中按回來時,「片段A」被替換爲「首頁」片段。如何保留「片段A」的狀態並在從「設置」活動返回時保持抽屜打開?從活動返回後保留片段

爲了便於說明,我想回到我發起活動的片段,在這種情況下是設置活動,而不是回到'Home'片段。任何幫助將不勝感激,謝謝!

這裏是我的抽屜代碼:

if (id == R.id.fragOne) { 
     fragment1 = new FragmentOne(); 
     android.support.v4.app.FragmentManager fragmentManager1 = getSupportFragmentManager(); 
     fragmentManager1.beginTransaction() 
       .replace(R.id.container, fragment1, "frag1") 
       .commit(); 
    } else if (id == R.id.fragTwo) { 
     fragment6 = new fragmentTwo(); 
     android.support.v4.app.FragmentManager fragmentManager2 = getSupportFragmentManager(); 
     fragmentManager2.beginTransaction() 
       .replace(R.id.container, fragment2, "frag2") 
       .commit(); 
    } else if(id == R.id.helpDrawer){ 
     Intent drawerHelp = new Intent(MainActivity.this, Help.class); 
     startActivity(drawerHelp); 

    } 
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    if (drawer != null) { 
     drawer.closeDrawer(GravityCompat.START); 
    } 
    return true; 
+0

你是如何回到碎片從活動? – Sanoop

+0

我正在按活動中的後退按鈕返回到片段。在我的主要活動中,我重寫了後退按鈕以查看抽屜是否如此打開.. @Override public void onBackPressed(){ DrawerLayout drawer =(DrawerLayout)findViewById(R.id.drawer_layout); (抽屜!=空){(drawer.isDrawerOpen(GravityCompat.START)){ drawer.closeDrawer(GravityCompat.START); } else { super.onBackPressed(); } } } –

+0

你嘗試過'supportFinishAfterTransition();'? – Sanoop

回答

1

嘗試添加完成()時,返回按鈕,設置活動被按下。當我們從其他活動調用一個活動時,調用者活動的實例狀態被保存,因此您的片段將被保存在堆棧中,然後調用的活動將被調用,所以如果您想返回,那麼只需完成第一個活動和調用者活動的實例狀態將被調用,並且您將獲得您從中調用設置活動的相同片段。 因此,在SettingsActivity中添加此代碼。

@Override 
onBackPressed{finish();} 

這將解決您的片段問題。我不確定抽屜保持打開狀態。