【发布时间】:2015-12-23 19:53:55
【问题描述】:
假设我有 MainActivity,其中 ViewPager 中的片段很少。我想将数据从另一个 Activity 传递到这些片段之一。我正在通过 BroadcastReceiver 执行此操作。
public class MyFragment extends Fragment {
private MyFragmentReceiver mReceiver;
public MyFragment() {
super();
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mReceiver = new MyFragmentReceiver();
getActivity().registerReceiver(mReceiver, new IntentFilter("fragmentUpdater"));
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_my, container, false);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
// My code here
}
public class MyFragmentReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//My methods
}
}
@Override
public void onDestroy() {
super.onDestroy();
if (mReceiver != null)
getActivity().unregisterReceiver(mReceiver);
}
}
所以在我的另一个活动中,我正在做这样的事情:
Intent data = new Intent("fragmentUpdater");
MyApplication.getInstance().getMainActivity().sendBroadcast(data);
其中 MyApplication 是包含 MainActivity 的单例。 我注意到 BroadcastReceiver 正在将某些内容放入日志中,我想知道这是最好的方法。
- 是否有更好的方法将数据从另一个活动传递到特定的 Fragment 或调用该 Fragment 中的方法?
- 我是否必须在 AndroidManifest.xml 中包含与 BroadcastReceiver 相关的内容?
【问题讨论】:
-
您可以使用
LocalBroadcastManager而不是BroadcastReceiver进行内部组件通信 -
但我的做法是个好方法?
-
你可以在你的activity和fragment之间建立一个接口。如果您有兴趣,我可以发布一个示例。
-
我很感兴趣:)
标签: android android-fragments android-activity broadcastreceiver