为了账号安全,请及时绑定邮箱和手机立即绑定

片段事务上的活动重置

片段事务上的活动重置

慕工程0101907 2021-06-22 17:49:35
我有一个活动,它根据用户操作(按钮单击)或事件(触发 LocalBroadcast 的 FCM 数据消息)加载多个片段。我最近在将 Fragment Transaction 放入 BroadcastReceiver 时遇到了障碍,一旦接收器被触发,而不是加载下一个片段,我会得到第一个(默认)片段,它在活动的 OnCreate 中加载,暗示 Activity 以某种方式重置/重新启动。鉴于这种速度,我在 Android Studio 上的 logcat 重置之前设法看到的唯一错误是:java.lang.IllegalStateException: 在 onSaveInstanceState 之后无法执行此操作除了我发现的这篇关于 Activity State Loss 的文章外,四处挖掘并没有太大帮助。它相当古老(2013 年),但似乎有道理。但是,除了让我的片段更复杂一点,并将下一个片段的逻辑交给这个本身之外,我想不出任何解决方案。请在下面找到发生这种情况的代码位。BroadcastReceiver assistanceReceivedStatusReceiver = new BroadcastReceiver() {        public void dummyfunc(){            return;        }        @Override        public void onReceive(Context context, Intent intent) {            // this is triggered by the localBroadcast from FCM Service            boolean requestresult = intent.getBooleanExtra("success", true);            if(!requestresult) {                // we don't have a responder                Log.d(TAG, "onReceive: =======================================");                Log.d(TAG, "onReceive: =======================================");                Log.d(TAG, "onReceive: UNABLE TO FIND A RESPONDER");                Log.d(TAG, "onReceive: =======================================");                Log.d(TAG, "onReceive: =======================================");                String message = "Unable to find you a responder, please try again!";                frameAnimation.stop();                txtRequestStatus.setText(message);                dialogButtonLayout.setVisibility(View.VISIBLE);                showBottomAppBar();                showMenuFab();                moveMenuRight();                setMenuImage(R.drawable.baseline_undo_white_24dp);                menuButton.setOnClickListener(new View.OnClickListener() {            }        }    };关于出了什么问题的任何想法?与往常一样,我很高兴根据需要分享更多信息(代码库非常庞大,知道需要什么有助于我分享相关部分)。
查看完整描述

1 回答

?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

据我所知,您的活动因添加片段时崩溃而重新启动(java.lang.IllegalStateException)。

要确认,您可以更换

.commit()

方法与

.commitAllowingStateLoss()

看看这是否能解决你的问题


查看完整回答
反对 回复 2021-06-30
  • 1 回答
  • 0 关注
  • 170 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信