非法状态异常活动已被销毁fragmenttransaction.commit()



我以前见过这个问题的几个版本,但这次例外的原因似乎与我自己的不同。

我想做什么:

-主活动类在底部有一个工具栏,点击按钮将显示一系列片段,一个接一个。

-一个类edittitemfragmentmanager,它被安装在按钮点击上,并且有方法显示特定的片段基于被点击的工具栏按钮。

我想使用我创建的这个管理器类,因为它可以显著地清理我的代码,并且可以在以后添加更多的功能。

这是我的edittitemfragmentmanager类,我不确定是否扩展活动是一个好主意,我认为它会把我的MainActivity暂停

public class EditItemFragmentManager extends Activity{
//instance variables
public EditItemFragmentManager(){
// initialization of some variables
}

public void editItem(){
editItemSequence();
}
private void editItemSequence(){
EditNameFragment enf = new EditNameFragment();
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
        fragmentTransaction.add(editNameFragment, EDIT_FRAG_TAG);
        fragmentTransaction.addToBackStack(EDIT_FRAG_TAG);
        fragmentTransaction.commit();
}
}

当commit();,给我

java.lang.IllegalStateException: Activity has been destroyed

这就是我如何试图从我的MainActivity,

得到这个片段
 @Override
            public void onClick(View view) {
                EditIteFragmetManager manager = new EditIteFragmetManager();
                manager.editItem();
            }

我还在学习Android的activity生命周期。我认为我的问题是由于这个类扩展活动,这使我的主暂停,和FragmentTransaction没有什么要提交?如果是这样,我需要得到我的主活动的现有实例,并调用它吗?这就是我有点迷失的地方,如果有人了解活动/片段的生命周期,解释我如何在仍然有这样的助手类的情况下实现这一点?

如果您正在使用SupportFragmentManager,那么您需要从FragmentActivity扩展,而不仅仅是Activity。还要确保从v4支持库中导入Fragment,而不是从android.app中。

除此之外,你似乎用"new"实例化了Activity的子类,这很糟糕。仅使用intent创建活动

我通过将我的管理器类移动到main的私有内部类来解决这个问题,因为它们是如此紧密耦合。现在没有片段问题

相关内容

  • 没有找到相关文章

最新更新