我正在尝试使用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类通过显示文件列表来工作,当选择一个文件时,会出现一个警告对话框用于确认,而在监听器中,是的输入我调用上面详述的方法。如何在完成调用后返回结果?
编辑:
我认为这个问题是一个监听器或者在调用完成后继续运行的东西。我不知道是什么。我已经编写了一个测试应用程序,它可以在两个活动之间切换按钮并且它可以正常运行,我没有所有额外的方法,基本上和这个项目的代码相同。
EDIT2: 我基本上注释掉了FileManager类中的所有内容,但它仍然没有返回正确的结果。因此,它必须是启动它的活动的问题。
EDIT3: 在我忘记删除的一些旧代码中出现错误,在switch case语句之前我将FLAG_ACTIVITY_NEW_TASK标志放在intent上。
答案 0 :(得分:0)
我在意图上有不必要的标志。另外,我需要记住删除用于测试的旧代码。