Android onBackStackChanged() 未调用

标签 android android-fragments fragmentmanager

我有一个 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");
}       
}

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

最佳答案

您需要使用 addOnBackStackChangedListener 将您的 Activity 添加为 OnBackStackChangedListener

例子:

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

关于Android onBackStackChanged() 未调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23599519/

相关文章:

java - 如何在android中使用json数组限制问题的长度?

android - Honeycomb SDK 是否破坏了 GridView 的向后兼容性?

java - Horizo​​ntalScrollView 与 EditText 向右跳转

android - 如何将tablayout的指示器从底部更改为顶部?

java - 从 Activity 中将文本设置为 Fragment

java - 尝试将新的dialogFragment添加到 fragment 上的现有dialogfragmen时,FragmentManager.beginTransaction()在空对象引用上

android - 保留的 fragment 是否保留其 View ?

java - 如果我有 1 个服务器和多个客户端,我是否需要 SocketServerChannel?

java - 使用 Kotlin 在 Android 中发送用于 Volley 授权的 header