【问题标题】:Call fragment from activity in android从android中的活动调用片段
【发布时间】:2014-09-01 23:32:14
【问题描述】:

我目前正在处理使用过的片段中的项目。但是在这里,当我从 Fragment 调用活动类时,它运行良好。我要做的是在 Back Pressed 上我需要调用一个 Fragment。但我不能,它显示错误并且我的应用程序停止。

所以我的问题是如何从活动中调用片段,以便我的序列应该是片段>活动>片段。

07-11 16:22:12.190: E/AndroidRuntime(11963): java.lang.IllegalStateException: 在 onSaveInstanceState 之后无法执行此操作

& 当我想从片段中调用活动时,它会给出错误

07-11 15:52:25.961: E/FragmentManager(11885): 没有为片段找到 id 0x7f05003c 的视图

那么,我怎样才能从活动中调用片段和从片段中调用活动?

【问题讨论】:

    标签: android android-activity android-fragments


    【解决方案1】:

    尝试改变

    transaction.commit();
    

    transaction.commitAllowingStateLoss();
    

    或者在你的activity中注释掉super onSaveInstance方法:

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        //super.onSaveInstanceState(outState);
    }
    

    要从片段中调用活动,您可以使用:

    ((YourActivity)getActivity).someMethod();
    

    【讨论】:

    【解决方案2】:
    • java.lang.IllegalStateException: onSaveInstanceState 后无法执行此操作

    解决方案:

    添加或执行时使用transaction.commitAllowingStateLoss(); 导致异常的FragmentTransaction

     Why was the exception thrown?
    

    抛出异常是因为您在保存 Activity 的状态后尝试提交 FragmentTransaction,导致称为 Activity 状态丢失的现象。

    当你在调用onSaveInstanceState() 之后调用FragmentTransaction#commit() 时,事务将不会被记住,因为它从来没有被记录为活动状态的一部分。从用户的角度来看,事务会出现丢失,从而导致 UI 状态意外丢失。为了保护用户体验,Android 不惜一切代价避免状态丢失,只要发生就会简单地抛出一个IllegalStateException

    注意:

    使用commitAllowingStateLoss() 仅作为最后的手段。调用commit()commitAllowingStateLoss() 的唯一区别是,如果发生状态丢失,后者不会抛出异常。通常你不想使用这种方法,因为它暗示有可能发生状态丢失。当然,更好的解决方案是编写您的应用程序,以保证在保存活动状态之前调用 commit(),因为这将带来更好的用户体验。除非无法避免状态丢失的可能性,否则不应使用commitAllowingStateLoss()

    更多来自:fragment-transaction-commit-state-loss

    • FragmentManager(11885): 没有为片段找到 id 0x7f05003c 的视图

    解决方案:

    根据您在活动setContentView 的布局中设置的内容,片段管理器无法找到具有R.id.Container 的视图。

    因此,无论您在 setContentView 中设置了什么布局,该布局都不包含具有解析为 id 0x7f05003c 的视图的视图,例如 R.id.Container

    【讨论】:

      猜你喜欢
      • 2013-10-28
      • 2012-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多