2017-03-27 1 views
0

사용자가 Main_Activity.xml에 이름, 이메일, 날짜 등을 입력하도록 요구하는 앱을 만들고 있습니다. 그런 다음 사용자가 제출을 클릭합니다. 입력 된 데이터가 confirm.xml에 표시됩니다. confirm.xml에서 사용자는 입력 된 데이터를 확인해야하며 입력 된 데이터를 편집하려면 다시 버튼을 클릭하여 데이터를 다시 편집합니다. 나는 그 일을 시도했지만 일단 뒤로 버튼을 클릭하면 editText 필드에 입력 한 모든 데이터가 사라졌습니다. MainActivity.xml의 editText 필드에 입력 한 데이터를 유지하여 편집해야하는 일부 필드 만 변경할 수 있습니다. 어떻게해야합니까? 고맙습니다.edittext 필드에 입력 된 텍스트를 유지하는 방법은 무엇입니까?

+0

당신의 코드를 보여주세요 –

+0

데이터를 삭제하셨습니까? –

+0

주 활동에서'finish()'와 같은 키워드를 사용하지 마십시오. –

답변

0

onSaveInstanceState(Bundle savedInstanceState) 함수를 덮어 쓰고 savedInstanceState를 사용하여 onCreate(Bundle instanceState) 또는 onRestoreInstanceState(Bundle instanceState) 중에 반환 할 다양한 데이터를 저장할 수 있습니다.

@Override 
public void onSaveInstanceState(Bundle savedInstanceState) { 
    super.onSaveInstanceState(savedInstanceState); 
    savedInstanceState.putString("TextFieldX", "Data To Retrieve"); 
} 

그리고 그것을 다시 얻을 :

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onRestoreInstanceState(savedInstanceState); 
    //get back value 
    String value = savedInstanceState.getString("TextFieldX"); 
} 

https://developer.android.com/reference/android/os/Bundle.html

데이터의 이상 거주 지속성의 경우, SQLite에 기록합니다.

+0

제안 해 주셔서 감사합니다. 나는 그것을 시도 할 것이다. – jdk

0

데이터를 입력 한 활동이 삭제 된 경우 발생할 수 있습니다. 새 확인 활동을 어떻게 열지? 이것이 아마도 오류를 포함하고있는 코드 부분입니다.

새 활동을 열 때 finish()으로 전화하면 활동이 삭제되고 EditText에 보관 된 데이터가 지워집니다.

새로운 활동을 열고 현재의 데이터를 보존하려면 을 finish()없이 호출하면됩니다.

Intent intent = new Intent(context, ConfirmationActivity.class); 
startActivity(intent); 

어쨌든 안드로이드를 사용하면 필요할 때 메모리를 비울 수 있습니다. 메모리가 필요하지만 메모리가 응용 프로그램에서 사용되는 다른 응용 프로그램을 열면 시스템이 사용자의 작업을 파괴하므로 Bundles을 사용하여 디스크에 데이터를 저장하고 복원하는 것은 사용자의 몫입니다.

난 당신이이 책을 제안 https://developer.android.com/guide/components/activities/activity-lifecycle.html

+0

제안 해 주셔서 감사합니다. 나는 그것을 시도 할 것이다. – jdk

0

당신은 문자열의 개인 문자열 이름 등의 모든 정보를 저장할 수 있습니다;

if(name != null && !name.toString().isEmpty()) { 
set name String on your editText widget. 
} 
0

당신은 사용자의 전화에서 글고 값의 값을 저장하는 공유 환경 설정 객체를 사용할 수 있습니다 : 사용자가 이름의 입력하고 다음과 같이 다시 사용할 때 쓰기는 /이 이름을 설정합니다. 코드가 두 번 실행되면 공유 환경 설정에서 변수 만 확인하면됩니다. variable이 null이 아니면 값을 가져 와서 setText() 메소드를 사용하여 해당 문자열을 설정하십시오.

관련 문제