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您的答案。如何在不参与承载片段的活动的情况下初始化片段?