簡體   English   中英

StartActivityForResult不暫停主要活動

[英]StartActivityForResult not pausing Main Activity

我已經創建了一個對話框作為活動,用戶在其中檢查三個單選按鈕之一,並將結果返回到主活動。 我按照這個問題答案

我認為通過創建此MainAcitvity將暫停並等待子活動的結果。

private void getFinalFinish() {

    Intent intent_openDialog = new Intent(this, DaAAmountToFinish.class);
    // Start the SecondActivity
    Bundle bundle_PassToDialog = new Bundle();

    bundle_PassToDialog.putInt("EXTRA_SCORE_TO_SUBTRACT", scoreToSubtractFrom);
    bundle_PassToDialog.putString("EXTRA_RADIO_BUTTON", rb_selected.getText().toString());
    bundle_PassToDialog.putString("EXTRA_THROWING", whosThrowing);        
    intent_openDialog.putExtras(bundle_PassToDialog);
    startActivityForResult(intent_openDialog, DIALOG_REQUEST_CODE);


}

此代碼在需要時執行,每當我按下“后退”按鈕時,我就會看到它顯示的內容(我的主要活動繼續到打開另一個活動的地步,在我從對話框中獲得活動結果后,我只想打開該活動)。

活動結果代碼...

 // This method is called when the dialog activity finishes
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    // Check that it is the SecondActivity with an OK result
    if (requestCode == DIALOG_REQUEST_CODE) {
        if (resultCode == RESULT_OK) {


            Bundle extras = data.getExtras();
            // Get String data from Intent
            int darts_to_minus = extras.getInt("DARTS_TO_MINUS");
            boolean addTooScore = extras.getBoolean("ADD_TO_SCORE");
            int dartsToSubtractFromFinish = extras.getInt("DARTS_TO_SUBTRACT_FROM_FINISH");

            setMatchAVG(darts_to_minus, whosThrowing, addTooScore);


            if (newBestLeg) {

                if (whosThrowing.equalsIgnoreCase("Player 1")) {
                    tv_bestLeg.setText(getString(R.string.tv_BestLeg, String.valueOf(tempNumOfDartsThrownP1 + dartsToSubtractFromFinish))); //Subtract 2 off best leg only took 1 dart to finish
                } else {
                    tv_bestLegP2.setText(getString(R.string.tv_BestLeg, String.valueOf(tempNumOfDartsThrownP2 + dartsToSubtractFromFinish)));
                }
            }
        }
    }
}

為什么是這樣?

我的主要活動繼續到打開另一個活動的地步,我只想在從對話框中獲得活動結果后才打開

這是“按預期工作”:

  • 一旦方法開始,它將繼續進行直到完成為止(如果方法用時不長,因此會導致ANR)。

  • 執行Activity方法的默認線程是主線程。 具體來說,如果啟動另一個Activity ,則其方法也將在主線程上執行。

  • 因此,只有在啟動新Activity的方法完成后才能執行新Activity的第一個方法。

  • 接下來,您應該將所有需要等待結果的所有部分從新Activity移到應用程序的另一部分。 您重寫onActivityResult()並根據結果觸發這些部分的執行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM