我有一個片段以至我有一個列表視圖。當我按下列表視圖位置時,我打開片段對話框,在其中發送點擊項目的位置。在那裏,我可以從列表視圖中改變一些數據。但是,當我改變我的方向(片段和對話框片段獲得不同的佈局)時,實時更改不再工作。如果我去了另一個片段,而不是返回,那麼這個變化已經完成但沒有生效。在屏幕方向更改後從對話框中更新ListView
都將setRetainInstance設置爲true。
設置適配器的片段:
documentPosListViewAdapter = new DocumentPosListViewAdapter(rootView.getContext());
listViewDocumentPos.setAdapter(documentPosListViewAdapter);
對話框聽衆:
@Override
public void onDataUpdated() {
currentWorkDocumentPos.calcPos();
session.getWorkDocumentPosDao().update(currentWorkDocumentPos);
currentWorkDocument.headCalc();
session.getWorkDocumentDao().update(currentWorkDocument);
refreshWorkDocumentLabels();
documentPosListViewAdapter.notifyDataSetChanged();
}
而我在對話框中正在做的:
currentWorkDocumentPos.setQuantity(quantity + 1);
String n_q = Double.toString(currentWorkDocumentPos.getQuantity());
editTextQuantity.setText(n_q);
editTextQuantity.setSelection(n_q.length());
myListener.onDataUpdated();
一切正常,直到我改變屏幕方向。然後實時更改不再發生。我猜測documentPosListViewAdapter.notifyDataSetChanged(); doesent不再做它的工作,但我不知道爲什麼。
編輯:
在對話框我有這2個部分,在對話框佈局再現本身旋轉normaly:
setRetainInstance(true); and
@Override
public void onDestroyView() {
if (getDialog() != null && getRetainInstance())
getDialog().setDismissMessage(null);
super.onDestroyView();
}
而在mainFragment我有setRetainInstance(真);當我旋轉屏幕時它也會重新創建。如果我從主片段中刪除setRetainInstance,那麼發生2件事: 1.當我打開另一個片段並旋轉兩個片段的佈局看起來重疊istelf:S 2.當我從列表視圖中打開片段對話框並旋轉對話框失去我點擊的listview位置
需要說明的是,您將'setRetainInstance'設置爲true,但是您在旋轉時手動重新創建佈局? – Qw4z1 2014-10-22 14:47:58
我編輯了我的問題。請檢查。 – 2014-10-23 07:52:54
檢查此問題http://stackoverflow.com/questions/11307390/dialogfragment-disappears-on-rotation-despite-setretaininstancetrue並嘗試只在對話框中刪除setRetainInstance – Qw4z1 2014-10-24 07:57:41