当我从backstack中删除特定片段时getbackstackentrycount()
没有刷新但片段成功删除!
我的测试代码在这里:
int count = fragmentManager.getBackStackEntryCount();
fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.remove(fragcontent);
fragmentTransaction.commit();
//also I add here this code => fragmentManager.executePendingTransactions();
//but count not getBackStackEntryCount() return previous count!
int newCount = fragmentManager.getBackStackEntryCount();
我非常傻笑但没有解决。
答案 0 :(得分:0)
你的方法不对。你应该在你的活动中做这样的事情。
@Override
public void onBackPressed()
{
final Fragment fragment = this.getSupportFragmentManager().findFragmentById(R.id.main_frame);
if (fragment != null && fragment instanceof FragmentB)
{
// Replace it with FragmentA
}
else
{
super.onBackPressed();
}
}
答案 1 :(得分:0)
我相信您可能想要做的是以下内容:
活动:
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
...
getSupportFragmentManager().addOnBackStackChangedListener(new OnBackStackChangedListener()
{
public void onBackStackChanged()
{
int backCount = getSupportFragmentManager().getBackStackEntryCount();
if (backCount == 0)
{
finish();
}
}
});
要使用它,您需要将片段添加到backstack:
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.fragment_container, fragment)
.addToBackStack(null)
.commit();