android - getFragmentManager().popbackstack() 导致空指针异常

标签 android android-fragments nullpointerexception back-stack

我正在开发一个包含很多 fragment 的 Android 应用程序。但是我在它们之间切换时遇到了问题。

假设我有一个 fragment A,现在我想转到 fragment B,为此我这样做 --

FragmentManager manager = getFragmentManager();
                    FragmentTransaction transaction = manager
                            .beginTransaction();
                    Fragment fragment = new Fragment_B();                   
                    transaction.add(R.id.frameLayout, fragment);
                    transaction.addToBackStack(null);
                    transaction.commit();

我成功到达 fragment B。现在我必须从这里转到 fragment C,为此我又在做同样的事情。

FragmentManager manager = getFragmentManager();
                        FragmentTransaction transaction = manager
                                .beginTransaction();
                        Fragment fragment = new Fragment_C();                   
                        transaction.add(R.id.frameLayot, fragment);
                        transaction.addToBackStack(null);
                        transaction.commit();

我也成功地做到了这一点。现在我必须恢复到 fragment B,为此我做 -

getFragmentManager.popbackstack();

这让我回到了 fragment B。但是当我现在做同样的事情去 fragment A 时,它会导致 NullpointerException。

我在这里做错了什么。为什么第一次运行完美,第二次却失败了?请帮忙。

最佳答案

我认为您必须首先检查后台堆栈中是否有可用的 fragment 。按照我下面的代码:

if(manager.getBackStackEntryCount()>0){
    manager.popBackStack();
    manager.beginTransaction().commit();
}

就是这样......

是的,你最初没有将 fragment a 添加到 backstack,所以交叉检查..

关于android - getFragmentManager().popbackstack() 导致空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24185903/

相关文章:

Java:构造函数中的 NULL

即使纵向模式被锁定,Android 应用程序也会自动旋转到横向模式几秒钟

android json响应键值,解析

java - 在 fragment 中使用上下文

android - 强制关闭 : I have created a simple app with two fragments where fragemnt A is sendind data/string to Fragment B

java - REST api和json解析

android - 如何为 Android 应用程序添加水印?

android - 实时/零延迟视频流 : what codec parameters to use?

android - FragmentManager.popBackStack() 并不是简单的加载之前的Fragment

Java Graphics SetColor 给出 NullPointerException