2014-05-13 2 views
1

사용자가 더 긴 텍스트를 입력 할 수있는 EditText가있는 조각이 있습니다. 이제 사용자가 무언가를 입력 할 때 어떤 이유로 든 화면을 끈 다음 화면을 다시 켜면 EditText는 비어 있습니다.장치 화면을 껐다가 다시 켜면 조각 상태를 저장/복원하는 방법

나는 onSaveInstance가 상태를 저장하는 올바른 장소 여야한다고 생각하고 실제로 saveInstance 매개 변수를 가진 create 메소드 중 하나는 이전에 저장된 상태를 검색하기에 충분해야하지만 작동하지 않습니다. onSaveInstance가 호출되었지만 create 메소드는이 객체를 검색하지 않습니다.

질문 : 화면이 꺼져있을 때 조각의 상태를 저장하려면 어떻게해야합니까? 화면을 다시 켰을 때이 상태를 복원하려면 어떻게해야합니까?

편집 : 블랙 벨트의 방법을 구현했지만 여전히 작동하지 않습니다. 나는 사용자가 긴 텍스트를 입력 할 수 있습니다 그것의 글고 치기와 조각이

@Override 
public void onActivityCreated(final Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 

    if (savedInstanceState != null) { 
     review.finalStatement = savedInstanceState.getString 
       (BUNDLE_KEY_STATEMENT); 
    } 
} 

@Override 
public void onSaveInstanceState(final Bundle outState) { 
    super.onSaveInstanceState(outState); 

    outState.putString(BUNDLE_KEY_STATEMENT, review.finalStatement); 
} 
+2

액티비티 onResume에서 조각을 추가하거나 전환합니까? 그러면 새로운 빈 EditText로 새 단편을 인스턴스화합니다. –

답변

1

(savedInstanceState가 null). 이제 사용자가 무언가를 입력 할 때 어떤 이유로 든 화면을 끈 다음 EditText를 다시 켜면 이 비어 있습니다.

기본 동작은 아닙니다. EditText 상태는 그대로 유지되어야합니다.

나는 onSaveInstance이 상태를 저장 할 수있는 권리 장소에 있어야하며 만드는 방법 중 하나 (즉, 실제로 saveInstance 매개 변수가) 이전 저장된 상태를 검색하기에 충분해야한다고 생각 -하지만 그렇지 않아 일. onSaveInstance가 호출되었지만 create 메소드는이 객체를 검색하지 않습니다.

입니다. onSavedInstanceState/onActivityCreated을 사용해야하며 onCreate는 사용하지 말아야합니다.

+0

기본 동작이 아니 었습니까? 내가 원하는 것 또는 무엇을 설명 하는가? :) – akohout

+0

당신이 묘사하는 것. – Blackbelt

+0

그래, 문제가 어디 있니? 내 코드를 업데이트했지만 솔루션이 저에게 효과적이지 않습니다. 어쩌면 나는 다른 것을 놓치고있다 .. – akohout

관련 문제