【发布时间】:2015-10-17 14:50:09
【问题描述】:
我使用 Activity1 的 startActivityForResult 来启动 Activity2:
btnSelectFiles.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
savePreferences();
Intent i = new Intent(getApplicationContext(),
FileManagerActivity.class);
Bundle mBundle = new Bundle();
mBundle.putString("FileManager", "NewOrder");
i.putExtras(mBundle);
startActivityForResult(i, Constants.addFilesCode);
}
});
onActivityResult 方法:
在 Activity2 中:
Intent returnIntent = new Intent();
setResult(1,returnIntent);
FileManagerActivity.this.finish();
但是在 Activity1 requestCode 正确,但 resultCode 始终为 0。
我不使用后退按钮。
我在Activity1中的onActivityResult
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.i(TAG, "onActivityResult");
Log.i(TAG,
"onActivityResult requestCode" + Integer.toString(requestCode)
+ "resultCode" + Integer.toString(resultCode));
// adding files to the list if the files were added successfully
if (requestCode == Constants.addFilesCode)
{
// successfull operation
if (resultCode == 1)
{
if (adapter == null)
addFiles();
else if (adapter.getCount() == 0)
addFiles();
else {
adapter.notifyDataSetChanged();
changeFileHeader();
}
btnFilesRemove.setVisibility(View.VISIBLE);
for (int b = 0; b < FileManagerActivity.getFinalAttachFiles()
.size(); b++) {
checks.add(b, 0);
}
}
}
【问题讨论】:
-
只是检查,但是你是在
Activity1的onActivityResult方法中检查这个值吗? -
是的。我收到 requestCode (是 5 - 正确)并且 resultCode 总是 0
-
我没有看到代码有任何明显错误,您能否添加更多周围的代码来提供帮助。你在哪里打电话给
setResult?我们也可以看到onActivityResult方法吗? -
尝试在活动中调用
super.finish();或只调用finish()而不是FileManagerActivity.this.finish()。一切似乎都是正确的 -
请使用Activity类中定义的常量。在这种情况下,正确的常数是 RESULT_OK。用这个常量替换 1 ,你就正确地得到了回调。
标签: android android-intent android-activity onactivityresult