我正在开发一个包含很多 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/