【发布时间】:2013-03-06 17:10:55
【问题描述】:
我正在使用本教程AndroidDev,我已将值从 FragmentA 传递到我的 FragmentActivity,但我在从 Activity 传递到 Fragment 时遇到问题。我的问题是我决定在 ViewPager 中托管我的片段。在这一点上,我必须从 ViewPager 中获取 FragmentA 或 FragmentB 的实例。我在 Activity 的 onCreate() 方法中调用了 onArticleSelected() 方法。我尝试过this,但它返回的是 Fragment,而不是 FragmentA 或 B。
public static class MainActivity extends Activity
implements HeadlinesFragment.OnHeadlineSelectedListener{
...
public void onArticleSelected(int position) {
ArticleFragment articleFrag = (ArticleFragment)
getSupportFragmentManager().findFragmentById(R.id.article_fragment);
if (articleFrag != null) {
articleFrag.updateArticleView(position);
} else {
ArticleFragment newFragment = new ArticleFragment();
Bundle args = new Bundle();
args.putInt(ArticleFragment.ARG_POSITION, position);
newFragment.setArguments(args);
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_container, newFragment);
transaction.addToBackStack(null);
transaction.commit();
}
}
}
【问题讨论】:
-
FragmentA 和 FragmentB 在哪里? ViewPager 在哪里?究竟是什么不工作?
-
MainActivity 宿主 FragmentA 和 FragmentB,但它是从 ViewPager 创建的,而不是 FragmentMenager。我无法在 FragmentA 或 B 的 MainActivity 中获取实例,因为它与 ViewPager 片段不同
-
您可以为您的片段分配一个标签,并使用 findViewByTag(tag) 或使用 ViewPager 的 get* 方法在活动中调用它们
-
TY,我试图从 ViewPager 获取当前实例,但是新的实例获取更合理,如果我将数据传递给片段,它将刷新片段
标签: android android-fragments android-viewpager