我有一个活动" 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;。视图分页器中的所有其他片段加载正常,但包含片段集的片段除外。 显示为空白屏幕。可能是什么问题呢?
答案 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作为参数,您可以根据需要添加任意数量的参数。