2017-06-20 90 views
-2

我有两个片段正在取代另一个片段。我需要当用户点击后退按钮时,它会转到上一个片段。第一个片段是从Activity添加的,第二个片段从内部替换第一个片段Fragment在Android中的BackStack中添加片段

这里是我帮助你理解的代码。

活动

// inside onCreate() method 

Fragment camInitializer = new Initializer(); 
    FragmentManager fragmentManager = getFragmentManager(); 
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
    fragmentTransaction.add(R.id.cameraLayout, camInitializer, "camInitializer"); 
    fragmentTransaction.addToBackStack("camInitializer"); 
    fragmentTransaction.commit(); 

凸轮初始化程序片段

// inside onClick() method 
Fragment cameraEditing = new Editing(); 
    FragmentManager fragmentManager = getFragmentManager(); 
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
    fragmentTransaction.replace(R.id.cameraLayout, cameraEditing,"cameraEditing"); 
    fragmentTransaction.commit(); 

从当我第一次点击后退按钮没有发生,然后第二遍的时候我就后退按钮的应用程序再次单击cameraEditing片段照常进入暂停状态。但我想当用户第一次点击后退按钮时,它将替换cameraEditing片段与camInitializer

+0

popBackStack()没有做的工作? –

+0

[Android:Fragments backStack]的可能重复(https://stackoverflow.com/questions/14354885/android-fragments-backstack) – Sufian

回答

1

使用类似这样的东西。

活动

Fragment camInitializer = new Initializer(); 
    FragmentManager fragmentManager = getFragmentManager(); 
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
    fragmentTransaction.add(R.id.cameraLayout, camInitializer, "camInitializer"); 
    //fragmentTransaction.addToBackStack("camInitializer"); 
    fragmentTransaction.commit(); 

片段

Fragment cameraEditing = new Editing(); 
    FragmentManager fragmentManager = getFragmentManager(); 
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
    fragmentTransaction.replace(R.id.cameraLayout, cameraEditing,"cameraEditing"); 
    fragmentTransaction.addToBackStack("cameraEditing"); 
    fragmentTransaction.commit(); 

这对我来说

0

在您的活动做工精细,试试下面的代码

@Override 
public void onBackPressed() 
{ 
    if(getFragmentManager().getBackStackEntryCount() > 0) 
    getFragmentManager().popBackStack(); 
    else 
    super.onBackPressed(); 
} 

参考:

Resuming a previous fragment onBackPressed()?