我有一個(gè)活動(dòng),它根據(jù)用戶操作(按鈕單擊)或事件(觸發(fā) LocalBroadcast 的 FCM 數(shù)據(jù)消息)加載多個(gè)片段。我最近在將 Fragment Transaction 放入 BroadcastReceiver 時(shí)遇到了障礙,一旦接收器被觸發(fā),而不是加載下一個(gè)片段,我會(huì)得到第一個(gè)(默認(rèn))片段,它在活動(dòng)的 OnCreate 中加載,暗示 Activity 以某種方式重置/重新啟動(dòng)。鑒于這種速度,我在 Android Studio 上的 logcat 重置之前設(shè)法看到的唯一錯(cuò)誤是:java.lang.IllegalStateException: 在 onSaveInstanceState 之后無法執(zhí)行此操作除了我發(fā)現(xiàn)的這篇關(guān)于 Activity State Loss 的文章外,四處挖掘并沒有太大幫助。它相當(dāng)古老(2013 年),但似乎有道理。但是,除了讓我的片段更復(fù)雜一點(diǎn),并將下一個(gè)片段的邏輯交給這個(gè)本身之外,我想不出任何解決方案。請(qǐng)?jiān)谙旅嬲业桨l(fā)生這種情況的代碼位。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() { } } };關(guān)于出了什么問題的任何想法?與往常一樣,我很高興根據(jù)需要分享更多信息(代碼庫非常龐大,知道需要什么有助于我分享相關(guān)部分)。
片段事務(wù)上的活動(dòng)重置
慕工程0101907
2021-06-22 17:49:35