0

목록보기가있는 조각이 있습니다. 내가 목록보기 위치를 누르면 클릭 된 항목의 위치를 ​​보내는 조각 대화 상자가 열립니다. 그런 다음 목록보기에서 일부 데이터를 실시간으로 변경할 수 있습니다. 그러나 방향을 변경하면 (조각과 대화 상자 조각이 다른 레이아웃을 얻음) 라이브 변경이 더 이상 작동하지 않습니다. 제가 다른 단편으로 돌아 가면 다시 변화가 생기지 만 살지 않습니다.화면 방향 변경 후 대화 상자에서 ListView 업데이트

모두 true로 setRetainInstance를가집니다. 조각에 어댑터를 설정

:

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는 더 이상 그 일을하지 않는다. 그러나 나는 이유를 모르고있다.

편집 :

대화 상자에서

나는이 두 부분을 가지고 대화 레이아웃이 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에서 프래그먼트 대화 상자를 열고 대화 상자를 닫으면 클릭했을 때의 목록보기 위치

+0

'setRetainInstance'를 true로 설정했지만 순환 게재시 레이아웃을 수동으로 다시 생성 하시겠습니까? – Qw4z1

+0

내 질문을 수정했습니다. 확인해주십시오. –

+0

이 질문을 확인하십시오 질문 : http://stackoverflow.com/questions/11307390/dialogfragment-disappears-on-rotation-despite-setretaininstancetrue 대화 상자에서 setRetainInstance 만 제거하려고합니다. – Qw4z1

답변

0

조각에서 setRetainInstance(true)을 삭제해야합니다. 기기를 회전하면 앱에서 활동을 다시 만듭니다. 그러나 여러분의 단편에는 오래된 활동을 저장하는 링크가 있습니다. (회전 후 이미 파괴되었습니다), 그 이유는 당신이 그들과 아무 것도 할 수없는 이유입니다.

방향이 변경 될 때 데이터를 저장하려면이 데이터를 onSaveInstanceState에 번들로 저장하고 onRestoreInstanceState와 같이 가져옵니다.

+0

내가 그렇게하면 아무 것도 작동하지 않습니다. 내 주 프래그먼트에서 setRetainInstance를 제거한 다음 다른 프래그먼트를 열고 화면 레이아웃을 회전하면 또 하나의 ontop이됩니다./회전 후 대화 상자를 열 때 eaven이 메인 파편에서 변경되었으므로 올바른 목록 뷰 위치를 잃게됩니다. –