簡體   English   中英

我在子活動中完成運行后未調用onActivityResult()

[英]onActivityResult() is not called after I run finish in the child activity

我正在嘗試使用startActivityForResult()在兩個活動之間傳遞數據。 這是我的代碼:

//Within an onOptionsItemSelected method
//..
intent.setClass(this, FileManager.class);
startActivityForResult(intent, 0);
//..
}

protected void onActivityResult(int requestCode, int resultCode, Intent intent){
    Log.w("result Recieved", "request code: " + requestCode + ", result code: " + resultCode);
    super.onActivityResult(requestCode, resultCode, intent);
    if (requestCode == 0 && resultCode == Activity.RESULT_OK){
        extras = intent.getExtras();
        if(extras != null){
            Log.w("result Recieved", "extras non null\n" + extras.toString());
            root = new File(extras.getString("SelectedDir"));
            fileName = extras.getString("SelectedFile");
            loadFile(root, fileName);
        }
    }
}

在FileManager中,我有:

//..
Intent i = new Intent();
Bundle bundle = new Bundle();
bundle.putString("selectedFile", file.getName());
bundle.putString("selectedDir", file.getPath());
i.putExtras(bundle);
setResult(RESULT_OK, i);
Log.d("Finishing status:", "Finishing");
finish();
//..

直到我重新打開活動(此時FileManager被迫關閉),它才會收到結果。 這將導致請求和結果代碼為0,表示失敗。 FileManager類通過顯示文件列表來工作,當選擇一個文件列表時,將顯示一個警報對話框進行確認,並且在偵聽器中輸入yes,我將調用上面詳述的方法。 如何使其在通話結束后返回結果?

編輯:

我認為問題是聽眾或在完成調用后仍在繼續運行。 我不知道怎么辦。 我已經編寫了一個測試應用程序,該應用程序可以在兩個帶有按鈕的活動之間進行切換,並且可以正常工作,我的代碼與該項目基本相同,而沒有所有其他方法。

EDIT2:我基本上注釋掉FileManager類中的所有內容,但它仍然無法正確返回結果。 因此,啟動它的活動一定是有問題的。

EDIT3:我在切換案例語句之前將FLAG_ACTIVITY_NEW_TASK標志放在了意圖上之前,我忘記刪除一些舊代碼時出錯。

我在意圖上有不必要的標記。 另外,我還需要記住刪除用於測試的舊代碼。

暫無
暫無

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

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