2016-10-07 88 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();} 

这将解决您的片段问题。我不确定抽屉保持打开状态。