在子活动中运行完成后,不会调用onActivityResult()

时间:2010-12-23 20:11:54

标签: android

我正在尝试使用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上。

1 个答案:

答案 0 :(得分:0)

我在意图上有不必要的标志。另外,我需要记住删除用于测试的旧代码。