我有一個活動,它根據用戶操作(按鈕單擊)或事件(觸發 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() { } } };關于出了什么問題的任何想法?與往常一樣,我很高興根據需要分享更多信息(代碼庫非常龐大,知道需要什么有助于我分享相關部分)。
片段事務上的活動重置
慕工程0101907
2021-06-22 17:49:35