我正在使用FragmentPagerAdapter创建片段A的多个实例。
我尝试了两种方法在fragement A中找到观点:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v= inflater.inflate(R.layout.fragment_cat_table, container, false);
title = (TextView) v.findViewById(R.id.cat_title);
pagenum = (TextView) v.findViewById(R.id.page_number);
title.setText(catName);
pagenum.setText("page #"+String.valueOf(catIndex));
return v;
}
上面的代码工作正常,视图来自inflater。 但第二种方式:
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
title = (TextView) getActivity().findViewById(R.id.cat_title);
pagenum = (TextView) getActivity().findViewById(R.id.page_number);
title.setText(catName);
pagenum.setText("page #"+String.valueOf(catIndex));
}
通过这种方式,我使用getactivity()
来查找视图。
奇怪的是:如果我有2个页面有2个片段A的实例:片段A_0,片段A_1,那么片段A_0将不会显示,片段A_1将显示在第0页。第1页将包含原始片段A:片段中的所有textview(title和pagenum)都未设置
我很好奇为什么会这样。
答案 0 :(得分:0)
稍微考虑一下......我想通了。
pageadapter将提前创建片段,以便在片段在屏幕上之前调用onActivityCreated
。因此,如果我在findviewbyId()
中执行onActivityCreated
,则可能会在当前正在显示的其他页面/片段中找到该视图并对其进行修改