14

我有一个Activity像下面的代码:

public class AuthenticatedMainActivity extends Activity implements FragmentManager.OnBackStackChangedListener{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        .............
        FragmentManager fragmentManager = getFragmentManager();           
        fragmentManager.beginTransaction().add(R.id.frame_container,fragment, "First").addToBackStack(null).commit();
    }

    private void switchFragment(Fragment fragment){            
      FragmentManager fragmentManager = getFragmentManager();
      fragmentManager.beginTransaction()
        .replace(R.id.frame_container, fragment).addToBackStack("Tag").commit();
    }

    @Override
public void onBackStackChanged() {
    System.out.println("====================================================changeeeeeeeeeeeeeeeeeeeeeeeeee");
}       
}

但是,onBackStackChanged()即使在成功用该方法替换片段后,也不会调用该switchFragment方法。

4

2 回答 2

30

您需要将您的添加ActivityOnBackStackChangedListenerusing addOnBackStackChangedListener

例子:

@Override
protected void onCreate(Bundle savedInstanceState) {
    .............
    FragmentManager fragmentManager = getFragmentManager();     
    fragmentManager.addOnBackStackChangedListener(this);      
    fragmentManager.beginTransaction().add(R.id.frame_container,fragment, "First").addToBackStack(null).commit();
}
于 2014-05-12T01:55:07.213 回答
0

唯一需要的就是在创建时执行此操作:

getFragmentManager().addOnBackStackChangedListener(this);
于 2015-12-07T21:28:13.363 回答