Android,从其他片段返回空列表视图

嗨,我已经在我的片段列表视图。 我用我的其他片段replace这个listview片段,但是当我想回到我的列表,它是空的。 我以为我可以恢复我的列表项目,但我不知道如何。 我假设符合片段生命周期我的适配器将是可重用的,但看起来不是。 这是我的代码:

public class ThreadListFragment extends Fragment implements FragmentConnectionStatus, ListFragment, OnClickListener, OnItemClickListener{ private ListView ListView; private PilotController Activity; private Button ButtonStartNewThread; private boolean Paused; private ThreadInfoAdapter adapter; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { /** * Inflate the layout for this fragment */ super.onCreateView(inflater, container, savedInstanceState); View view = inflater.inflate(R.layout.threads_list_fragment, container, false); System.out.println(this.Paused); if(this.Paused == false){ this.ListView = (ListView) view.findViewById(R.id.listViewActiveThreads); ArrayList<Guid> strs = new ArrayList<Guid>(); adapter = new ThreadInfoAdapter(view.getContext(), strs, this); } this.ListView.setAdapter(adapter); this.ListView.setItemsCanFocus(true); this.ListView.setOnItemClickListener(this); this.Activity = (PilotController) getActivity(); this.ButtonStartNewThread = (Button) view.findViewById(R.id.buttonStartThread); this.ButtonStartNewThread.setOnClickListener(this); return view; } @Override public void onPause() { super.onPause(); this.Paused = true; } 

但是当我回到我的旧名单,它是空的。 你能给我一些build议吗?

我find了解决scheme。 ListView可能是从“绘制堆栈”中删除,所以当调用OnDeleteView时,您的旧列表将不可用,下次虽然仍然设置此对象的引用。 解决方法是重新创buildListView并设置旧的适配器。 这个适配器由于这个教程http://developer.android.com/guide/components/fragments.html将继续存在,但视图被重新创build(所以旧的listview不存在了(它存在,但它是不可绘制的)。改变这一行:

  if(this.Paused == false){ this.ListView = (ListView) view.findViewById(R.id.listViewActiveThreads); ArrayList<Guid> strs = new ArrayList<Guid>(); adapter = new ThreadInfoAdapter(view.getContext(), strs, this); } 

至:

  this.ListView = (ListView) view.findViewById(R.id.listViewActiveThreads); if(this.Paused == false){ ArrayList<Guid> strs = new ArrayList<Guid>(); adapter = new ThreadInfoAdapter(view.getContext(), strs, this); } 

Solutions Collecting From Web of "Android,从其他片段返回空列表视图"

在“onActivityCreated”中,你可以检查你的dataList(在你的情况下为“strs”)是否为空,如果不是则使用它,否则创build一个新的代码。

 public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); if (strs == null) strs = new ArrayList<Guid>(); mListView = (ListView)getActivity().findViewById(R.id.listViewActiveThreads); mPersonAdapter = new ArrayAdapterPerson(getActivity(),mPersonList,this); mListView.setAdapter(mPersonAdapter); } 

我在这里find了我的解决scheme: 返回后,ListFragment是空的

使用transaction.hide(this):

 ft.addToBackStack(null); ft.hide(this); ft.add(R.id.frag_frame, lyrics); ft.commit();