我的父活动正在启动另一个活动,并且需要通过onActivityResult返回结果时更新其片段。我应该简单地在每个片段中实现方法以将数据传递给它们,还是应该采用不同的方式进行处理?
谢谢!
答案 0 :(得分:1)
使应该接收数据的片段实现具有适合方法的接口。
在从onActivityResult返回结果的活动中,使用getFragmentManager().findFragmentByTag("yourtag")
方法查找片段。将它转换为接口并调用方法是。
确保在调用findFragmentByTag
之后检查片段是否确实存在。
答案 1 :(得分:0)
如果片段是进行startActivityForResult调用的片段,则活动将获得处理结果的第一个镜头。当您考虑片段的模块化时,这是有意义的。一旦为所有未处理的结果实现了super.onActivityResult,该片段就可以处理结果。
要在片段中获得结果,请确保调用:startActivityForResult(intent,123);而不是getActivity()。startActivityForResult(intent,123);在你的片段里面。
我希望这能解决你的问题。
答案 2 :(得分:0)
有一天,我将不得不解决您的问题或类似问题。根据我的理解,您必须在Activity和Fragment之间实现一个接口。该链接位于Communicating with Other Fragments。与其他Google网页不同,该网页似乎很清晰。一段代码:
ArticleFragment newFragment = new ArticleFragment();
Bundle args = new Bundle();
args.putInt(ArticleFragment.ARG_POSITION, position);
newFragment.setArguments(args);
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
// Replace whatever is in the fragment_container view with this fragment,
// and add the transaction to the back stack so the user can navigate back
transaction.replace(R.id.fragment_container, newFragment);
transaction.addToBackStack(null);
// Commit the transaction
transaction.commit();
几乎总是,类 FragmentTransaction 参与管理数据。请注意 Bundle 如何用于传递数据,也用于从客户端获取数据。 玩得开心,让我们发布。