【发布时间】:2016-01-18 13:42:26
【问题描述】:
我是 android 编程新手。
我尝试了从数据库填充的 ListFragment,效果很好。
我可以显示这些值,但是当我尝试通过再次分离和附加片段来刷新视图时,在我放在 onActivityCreated 上的 getListView() 上尚未创建错误内容视图。
有什么想法吗?
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
listView = getListView();
db = new DatabaseAccess(getActivity().getApplicationContext());
List<Contact> contacts = db.getAllContacts();
if (contacts.size() > 0) {
List<Map<String, String>> contactList = new ArrayList<Map<String, String>>();
for (Contact con : contacts) {
Map<String, String> data = new HashMap<String, String>(2);
data.put("name", con.getName());
data.put("number", con.getNumber());
contactList.add(data);
}
SimpleAdapter adapter = new SimpleAdapter(getView().getContext(), contactList, android.R.layout.simple_list_item_2, new String[] {"name", "number"}, new int[] {android.R.id.text1, android.R.id.text2});
listView.setAdapter(adapter);
} else {
setEmptyText("Masih belum ada kontak");
}
setListShown(true);
db.closeDB();
}
当我尝试刷新片段时
void refreshFragment() {
Fragment frg = getFragmentManager().findFragmentById(R.id.fragment);
FragmentTransaction fragTransaction = this.getFragmentManager().beginTransaction();
fragTransaction.detach(frg);
fragTransaction.attach(frg);
fragTransaction.commit();
}
【问题讨论】:
-
是的,不要使用分离刷新片段,附加。做findFragment,检查片段是否是正确的实例并调用刷新函数来更新内容。
-
@Raanan :谢谢,但请解释一下“检查片段是否是正确的实例”,如如何做到这一点?
-
if(fragment instanceof MyFragment) {... } 在您将其转换为 MyFragment 之前,您是如何做到的。
标签: android android-fragments android-listfragment