查看片段内的寻呼机和片段 - 空白屏幕

时间:2016-10-21 13:31:20

标签: android android-fragments android-viewpager

我有一个活动" A"其中包含一个包含5个片段的视图寻呼机。 其中一个片段以编程方式添加了超过7-8个片段。 每个片段都使用相应片段中定义的静态方法实例()进行实例化。

for(int i = 0 ; i < 10; i++) {
    CustomFragment fragment = (CustomFragment) Class.forName(classNameList.get(i)).instance();
    getFragmentManager().beginTransaction().add(R.id.parentLinearLayout, fragment, fragmentTag).commitAllowingStateLoss();
}

当此活动启动并遍历不同的片段时,一切正常。

但如果我发起一项活动&#34; B&#34;并返回活动&#34; A&#34;。视图分页器中的所有其他片段加载正常,但包含片段集的片段除外。 显示为空白屏幕。可能是什么问题呢?

1 个答案:

答案 0 :(得分:0)

您正在使用构造函数来实例化Fragment并传递参数,当Android重新实例化Fragment时,它不使用您的构造函数,因此您的参数将被忽略。您应该使用Arguments传递参数。这是一个如何执行此操作的示例:

在MyFragment.java中:

private static final String KEY_ITEM = "item";

public static MyFragment getFragment(String myItem) {
    MyFragment fragment= new MyFragment ();
    Bundle args = new Bundle();
    args.putString(KEY_ITEM, myItem);
    fragment.setArguments(args);
    return fragment;
}


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    String myItem = getArguments().getString(KEY_ITEM);
}

在ViewPager适配器中:

    @Override
    public Fragment getItem(int position) {
        return MyFragment.getFragment("Your parameter here.");
    }

当然,我使用单个String作为参数,您可以根据需要添加任意数量的参数。