ViewPager + Fragments 启动新的活动页面

3
如果我有一个viewpager,其中每个页面都是一个fragment。并且其中一些片段想要启动其他视图/活动,所有这些请求是否都必须传递给父活动?因此,对于viewpager中的每个页面,启动新活动的所有请求以及需要传回片段的所有结果都必须通过一个单一的主活动。这似乎会变得混乱。有没有更好的处理方法?
谢谢
1个回答

3
对于视图页面中的每个页面,所有启动新活动的请求和需要传递回片段的所有结果都必须通过一个单一的主活动进行处理。
由于您的“片段”随其父“Activity”的生命周期而存在和消失,因此它们必须使用其父级来启动并接收其他“Activities”的结果。
从API 11开始,在最新的支持库中,您可以从片段内调用这些方法,并且它们将为您的父“Activity”执行。
    Intent intent = new Intent(getActivity(), SomeActivityToStart.class);
    startActivity(intent);

你也可以在你的Fragments中启动一个带有返回值的Activity
    Intent intent = new Intent(getActivity(), SomeActivityToStart.class);
    startActivityForResult(intent, REQUEST_CODE);

请在您的Fragment中覆盖onActivityResult(int requestCode, int resultCode, Intent data)以获取来自父Activity的结果。由于您不必自己管理父Activity和子Fragment之间的通信,因此我认为这不会太麻烦。请查看http://developer.android.com/reference/android/app/Fragment.html了解有关这些方法的参考资料。关于是否存在更好的处理方式,请参见上述引用。

1
谢谢你的回答,我不知道这些方法可以从片段内部调用,这让我的生活和代码变得更加容易了! - Nath5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接