java - onActivityResult 将数据从 fragment 返回到 Activity

标签 java android onactivityresult

我有一个 Activity A,它使用 startActivityForResult 打开 Activity B。

现在在 Activity B 中,它也是一个 Activity fragment 容器,它还包含一个带有菜单项的 ActionBar

现在,每当我在 Activity B 中按下操作栏按钮时,它应该从 Activity B 的选定 fragment 返回数据而不是它的持有者,而是应该将数据返回给 Activity A,因为它是启动的那个。

所以它基本上是将数据 fragment (在 Activity B 内)传递给 Activity B,然后再传递给 Activity A。

我正在绝望地尝试找到解决它的方法。有什么办法可以做到吗?

最佳答案

免责声明有很多方法,这是我更喜欢的一种,不是最好的,也不是最完美的,我就是喜欢这个。

在我看来,最简单的方法是将数据从 B 内部的 Fragment 传递到 ActivityB,然后从 ActivityB 传递到 ActivityA。

第 1 步 将数据从 Fragment 传递到容器 Activity 您有多种方法;我通常使用的是使用接口(interface):

为ActivityB创建界面

public interface IActivityB {
    void setDataAAndFinish(whateverType data);
}

在你的activityB中实现接口(interface)

public class InterventoActivity extends AppCompatActivity implements IInterventoActivity {

    @Override
    protected void onResume() {
        super.onResume();
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    private Bundle dataA = null;
    @Override
    public void setDataAAndFinish(whateverType data) {
        dataA = data;
        Intent intent = new Intent();
        intent.putExtra("data", data)
        setResult(RESULT_OK, intent);        
        finish();
    }
}

设置activityA请求并接受来自ActivityB的返回

首先,为结果启动activityB而不是正常启动

Intent i = new Intent(this, ActivityB.class);
startActivityForResult(i, 1);

然后读取结果

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == 1) {
         if(resultCode == RESULT_OK) {
             whateverType data = data.getStringExtra("data");
         }     
    }
} 

现在来自 fragment

((IActivityB)getActivity()).setDataAAndFinish(myDatas);

关于java - onActivityResult 将数据从 fragment 返回到 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49918582/

相关文章:

java - 从文件夹运行 java 类文件时出现问题

android - java.lang.IllegalArgumentException : width and height must be > 0 when setting bitmap 异常

如果使用默认选择器选择,Android onactivityresult 返回 null

安卓 : How to get file data from a Filechooser?

java - 使用 SimpleXml 无法解析日期

android - Kotlin : Type mismatch: inferred type is Intent? 但 Intent 是预期的

java - Noob JSP + Servlet + EJB 构建J2EE简单Web项目的资料

java - 用java解析http返回的xml

java - Gradle 创建不同的发行版

android - 从android执行.bat文件