finish()不会从Activity2收回到Activity1

时间:2015-09-09 18:56:15

标签: android onactivityresult activity-finish

我有一个由两个活动构建的应用程序。 主要活动(活动1),使用某个按钮,使用startActivityforResult将您带到活动2。

活动2是一个文件选择器,通过单击选择某个文件。 一旦选择了文件,我希望它将数据(所选文件路径)作为字符串发送回活动1并返回到活动1.因此,活动1将对文件执行某些操作(如活动1中所述) #39; s onActivityResult)。

我使用简单的onListItemClick实现(文件选择器使用列表视图来显示我们选择文件的列表)。

如果选择确实是一个文件(通过" Toast"输出给用户验证)。

有一个finish()方法,它应该发送回数据并带你回到活动1。

以下是活动2 onListItemClick方法的代码。如果需要更多,请告诉我,我将添加其余的活动):

@Override
protected void onListItemClick(ListView l, View v, int position, long id) 
{
String filename = (String) getListAdapter().getItem(position);
if (path.endsWith(File.separator)) 
{
filename = path + filename;System.out.println("Ends with file separator\n");
} 
else 
{
        filename = path + File.separator + filename;System.out.println("No file separator\n");
}
if (new File(filename).isDirectory()) 
{
        Intent intent = new Intent(this, ListFileActivity.class);
        intent.putExtra("path", filename);
        startActivity(intent);//re-do this activity, to enter the directory
 } 
else 
{
        File F=new File(filename);
        Toast.makeText(this, filename + " is not a directory, file chosen!", Toast.LENGTH_LONG).show();
        String P=F.getAbsolutePath();
        System.out.printf("---------------Absolute directory is %s\n",P);
        Intent ResultIntent=new Intent();
        ResultIntent.putExtra("Address",filename);
        setResult(Activity.RESULT_OK,ResultIntent);
        finish();
}
}

感谢大家的帮助, 朱利

1 个答案:

答案 0 :(得分:1)

假设您已发布Activity1代码,当您执行finish()时,它正在完成Activity1而不是Activity2