亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

OnActivityResult 沒有被調用

OnActivityResult 沒有被調用

墨色風雨 2021-12-10 15:44:07
在活動 A 中,我想打開一個對話框 (CustomDialog)。在 CustomDialog 中,它有一個用于打開相機的按鈕。但是onActivityResult在我從圖庫中選擇圖像后沒有被調用。沒有toast正在顯示?;顒覣private void openDialog() {        CustomDialog alert = new CustomDialog();        alert.showDialog(this);    }自定義對話框public class CustomDialog extends Activity{    Activity activity;    ImageView imageView;    public void showDialog(Activity activity) {        this.activity = activity;        final Dialog dialog = new Dialog(activity);        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);        dialog.setCancelable(false);        dialog.setContentView(R.layout.custom_dialog);        dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);        dialog.setCanceledOnTouchOutside(true);        imageView = (ImageView) dialog.findViewById(R.id.logoApp);        Button galleryBtn = (Button) dialog.findViewById(R.id.galleryBtn);        galleryBtn.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                galleryIntent();            }        });        dialog.show();    }    private void galleryIntent() {        Intent intent = new Intent();        intent.setType("image/*");        intent.setAction(Intent.ACTION_GET_CONTENT);//        activity.startActivityForResult(Intent.createChooser(intent, "Select File"), 1);    }    @Override    public void onActivityResult(int requestCode, int resultCode, Intent data) {        super.onActivityResult(requestCode, resultCode, data);        Toast.makeText(activity,"sdddddsss",Toast.LENGTH_LONG).show();        super.onActivityResult(requestCode, resultCode, data);        if (resultCode == Activity.RESULT_OK) {            if (requestCode == 1) {                onSelectFromGalleryResult(data);            }else{              // ...            }我按照這個http://www.theappguruz.com/blog/android-take-photo-camera-gallery-code-sample
查看完整描述

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.startActivityForResultCustomDialog.this.startActivityForResult

2) 將您的onActivityResult代碼從 CustomDialog移動到活動 A


查看完整回答
反對 回復 2021-12-10
?
森林海

TA貢獻2011條經驗 獲得超2個贊

您正在調用:startActivityForResulton activityreference 這與CustomDialog您期望onActivityResult被調用的不一樣。我不記得曾經調用過startActivityForResult非前臺的活動實例 - 我不確定它是否會起作用。我建議你改變:activity.startActivityForResultstartActivityForResult

順便提一句。在你onActivityResult你打了 super.onActivityResult(requestCode, resultCode, data);兩次電話。這是不正確的。


查看完整回答
反對 回復 2021-12-10
?
HUWWW

TA貢獻1874條經驗 獲得超12個贊

未調用 onActivityResult() 的原因是因為當您為結果啟動活動時調用 onActivityResult(),即 startActivityForResult(...) 然后當啟動的活動返回或完成時調用 onActivityResult()


查看完整回答
反對 回復 2021-12-10
  • 3 回答
  • 0 關注
  • 235 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號