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()
添加回答
举报