Android 如何频繁添加和删除同一片段
我的应用程序通常会多次添加和删除相同的片段。下面是我如何做到这一点的:Android 如何频繁添加和删除同一片段,android,fragment,fragmenttransaction,Android,Fragment,Fragmenttransaction,我的应用程序通常会多次添加和删除相同的片段。下面是我如何做到这一点的: 添加片段 if (mHomeFragment == null) { mHomeFragment = new HomeFragment(); new Handler().postDelayed(new Runnable() { @Override public void run() {
添加片段
if (mHomeFragment == null)
{
mHomeFragment = new HomeFragment();
new Handler().postDelayed(new Runnable()
{
@Override
public void run()
{
getSupportFragmentManager().beginTransaction().add(R.id.dummy, mHomeFragment).commit();
}
}, getResources().getInteger(R.integer.transition_duration));
}
else
{
getSupportFragmentManager().beginTransaction().add(R.id.dummy, mHomeFragment).commit();
}
getSupportFragmentManager().beginTransaction().remove(mHomeFragment).commit();
删除片段
if (mHomeFragment == null)
{
mHomeFragment = new HomeFragment();
new Handler().postDelayed(new Runnable()
{
@Override
public void run()
{
getSupportFragmentManager().beginTransaction().add(R.id.dummy, mHomeFragment).commit();
}
}, getResources().getInteger(R.integer.transition_duration));
}
else
{
getSupportFragmentManager().beginTransaction().add(R.id.dummy, mHomeFragment).commit();
}
getSupportFragmentManager().beginTransaction().remove(mHomeFragment).commit();
问题是,有时我的应用程序在从包含该片段(HomeFragment)的活动导航到另一个活动时崩溃。我试图找出原因,但还是没有办法。我这里没有完整的错误日志,因为此错误不经常发生,但错误如下所示:
如果有人看到我的代码有任何问题,或者知道如何修复这个错误,请帮助我。提前感谢大家。听起来runnable可能在活动暂停或完成后运行。只需确保在activity onPause方法上调用handler.removeCallback,以避免在完成后回调activity
如果您需要经常交换片段,可以使用FragmentTransaction和方法,以避免初始化开销。我认为,当您删除稍后要添加回的片段时,需要在事务中包含.addToBackStack(“名称”),当稍后要添加回时,请调用FragmentManager.popBackStack()要撤消removalI将尝试一下,但由于此错误不经常发生,因此我无法告诉您此错误现在是否仍在发生。谢谢。我确信此错误不是由处理程序造成的,因为我的片段总是在进入新活动之前添加。我也尝试使用隐藏和显示片段,但在我的情况下它不起作用。无论如何,谢谢r您的答案。如何在不参与承载片段的活动的情况下初始化片段?