我有一个导航抽屉,里面有6个片段。其中一个应该包含ListView。我让它工作了,我可以通过导航抽屉切换所有的片段。当我按下包含ListView的那一个时,我可以看到它,就像它应该是的一样。但是,当我转到相同的片段(包含ListView),而我已经在其中时,ListView不再显示。这可能是因为我在片段中的onActivityCreated()方法上设置了ListView。我现在很好奇,当我再次按下相同的片段时会发生什么。活动是否保持加载状态,片段是否需要再次膨胀,这样就不会再次调用OnActivityCreated()方法?如果是这样,我必须做些什么,才能使ListView再次显示?
我的Fragment.class当前是这样的:
public class FahrplanFragment extends Fragment {
private ListView listView;
private Resources res;
private String[] plans;
private ArrayAdapter<String> adapter;
public FahrplanFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_fahrplan, container, false);
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
listView = (ListView) getActivity().findViewById(R.id.listview_fahrplan);
res = getResources();
plans = res.getStringArray(R.array.plans);
adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1,
android.R.id.text1, plans);
listView.setAdapter(adapter);
}
}发布于 2017-04-17 03:25:44
和documentation中一样
在创建片段的活动并实例化该片段的视图层次结构时调用
。一旦这些部分就绪,它就可以用来执行最终的初始化,比如检索视图或恢复状态。。。这在onCreateView(LayoutInflater,ViewGroup,Bundle)之后和onViewStateRestored(Bundle)之前调用。
它每次都会被调用。您可以通过记录事件来进行检查。
当点击导航抽屉按钮时,你能发布事件处理的代码吗?
编辑1个
Here我重新创建了你的项目来测试它,它工作了。每次加载该片段时,都会包含列表视图。此外,它在事件发生时显示事件,并清楚地显示每次替换片段时都会调用onActivityCreated。
我在这里能给出的最佳建议是,在代码的各个步骤中使用Log.d()或System.out.println("...")记录代码,或者更好地通过设置断点进入调试模式,并在代码运行时检查代码,以了解它何时进入某些方法,何时不进入。
https://stackoverflow.com/questions/43440925
复制相似问题