Android 如何对碎片使用StartActivityForResult?

Android 如何对碎片使用StartActivityForResult?,android,android-fragments,Android,Android Fragments,目前我正在我的项目中使用片段。但对于搜索屏幕,我单独使用单独的活动。我正在尝试将该活动转换为片段。我的问题是目前我正在调用类似片段的搜索活动 private void callLocationSearch() { Intent intent = new Intent(activity, SearchDataFilterActivity.class); intent.putExtra(Constants.RECEIVE_INTENT_DATA, activity.g

目前我正在我的项目中使用片段。但对于搜索屏幕,我单独使用单独的活动。我正在尝试将该活动转换为片段。我的问题是目前我正在调用类似片段的搜索活动

private void callLocationSearch() {
        Intent intent = new Intent(activity, SearchDataFilterActivity.class);
        intent.putExtra(Constants.RECEIVE_INTENT_DATA, activity.getResources().getString(R.string.location));
        startActivityForResult(intent, FOR_SEARCH_LOCATION);
    }
从搜索屏幕我设置结果并发送到上一屏幕

setResult(Activity.RESULT_OK, returnIntent);
finish();
因此,在
onActivityResult
中,我得到结果并在搜索字段中设置。我在这个屏幕上有多个字段。所以我从搜索活动中搜索,并在这个片段中设置。现在我将搜索活动更改为片段。问题是我无法执行setResult并将其发送回fragment。我只能创建另一个片段并传递值。因此,前面的值将丢失。请告诉我解决我的问题的任何想法

随函附上截图:

第一个是碎片

二是搜索活动。

为了进一步澄清,我又附上了一张图片。

在片段中,您使用了“getActivity()


我突然想到两种方法: 1.使用localbroadcast将值从片段B发送到片段A
2.搜索完成后,将值存储在SharedReferences上,并在onResume中的片段中获取该值。


选择您的方式:)

您应该使用侦听器,在片段B中您可以这样做

private OnSomethingSelectedListener mListener;

// Container Activity must implement this interface
public interface OnSomethingSelectedListener {
    public void onSearchComplete(Result object or more params);
}
片段A(或应接收信息的类)应实现FragmentB.OnSomethingsSelectedListener和onSearchComplete方法。 在片段A或活动(当您创建片段B时)中,您可以将实例(片段A或活动)传递给片段B构造函数,如

FragmentB b = new FragmentB(this);

public FragmentB(OnSomethingSelectedListener listener) {
    mListener = listener;
}
现在…在片段B中,您将使用

mListener.onSearchComplete(result);
这是一个简单的侦听器,这是进行片段通信的方式,您可以在这里阅读更多关于这方面的内容


您可以发布屏幕吗?我仍然无法想象它在屏幕截图上的样子。请检查。这是出于意图。但我问的是一个片段一个片段的问题。这是最好的做法,但遗漏了一件事。我认为最好是通过标记找到片段B,而不是构造新的片段,因为片段是由片段管理器添加或替换的。Cmiiw
mListener.onSearchComplete(result);