【问题标题】:finish() won't take back from Activity2 to Activity1finish() 不会从 Activity2 收回到 Activity1
【发布时间】:2015-09-09 18:56:14
【问题描述】:

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

Activity 2 是一个文件选择器,通过单击它来选择某个文件。 选择文件后,我希望它以字符串的形式将数据(选择的文件路径)发送回活动 1 并返回活动 1。这样活动 1 将对文件执行某些操作(如活动 1 中所述onActivityResult)。

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

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

有一个finish() 方法应该发回数据并将您带回活动1。

这是 Activity 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();
}
}

感谢大家的热心帮助, 朱利叶斯

【问题讨论】:

  • “但它不这样做”....它做了什么?另外,你是在startActvitiyForResult() 之后在Activity1 中调用finish() 吗?
  • 您一遍又一遍地使用startActivity(intent); 来堆叠活动。
  • 当您从Activity2 启动Activity2 时,添加FLAG_ACTIVITY_SINGLE_TOP 并实现onNewIntent。您不想启动多个Activity2s,您必须在这一实例中处理所有目录导航。然后当您调用finish 时,它会将结果返回给Activity1
  • 你说得对,尤金!我切换到使用 SingleTop 模式,现在它可以工作了!但是当我第一次调用 Activity2 时(从 Activity1 调用时),我不应该使用 FLAG_SINGLE_TOP 吗? (从活动 1 调用时)。有什么区别?

标签: android onactivityresult activity-finish


【解决方案1】:

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

【讨论】:

  • @Julius 关于这个 onListItemClick 写的是什么类?
  • 该活动是活动 2。
猜你喜欢
  • 2011-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多