3 回答

TA貢獻1833條經驗 獲得超4個贊
當您在活動 A 中顯示對話框時,您alert.showDialog(this);
將對活動 A 的引用設置為參數: 然后在 CustomDialog 中,將此引用保存為活動變量:
public void showDialog(Activity activity) {
this.activity = activity;
...}
這意味著,這this.activity
是活動 A 的實例。稍后在您的 galleryIntent() 中,您開始活動以獲得如下結果:
private void galleryIntent() {
...
activity.startActivityForResult(Intent.createChooser(intent, "Select File"), 1);
}
這意味著 onActivityResult 將在活動 A 中調用,而不是在您的自定義對話框中調用,因為您使用了activity
變量。
您有 2 個修復選項:
1)替換activity.startActivityForResult
為CustomDialog.this.startActivityForResult
2) 將您的onActivityResult
代碼從 CustomDialog移動到活動 A

TA貢獻2011條經驗 獲得超2個贊
您正在調用:startActivityForResult
on activity
reference 這與CustomDialog
您期望onActivityResult
被調用的不一樣。我不記得曾經調用過startActivityForResult
非前臺的活動實例 - 我不確定它是否會起作用。我建議你改變:activity.startActivityForResult
到startActivityForResult
順便提一句。在你onActivityResult
你打了 super.onActivityResult(requestCode, resultCode, data);
兩次電話。這是不正確的。

TA貢獻1874條經驗 獲得超12個贊
未調用 onActivityResult() 的原因是因為當您為結果啟動活動時調用 onActivityResult(),即 startActivityForResult(...) 然后當啟動的活動返回或完成時調用 onActivityResult()
添加回答
舉報