2015-01-19 2 views
0

안녕하세요. 내 앱에서 두 가지 테마를 사용하고 있습니다. 테마가 변경되면 활동이 다시 작성됩니다. 이 시점에서 편집 텍스트 값을 복원 할 수 없습니다.활동을 다시 만들 때 Android 공유 환경 설정

 @Override 
     protected void onResume() { 


      SharedPreferences mSharedPreferences = getSharedPreferences(
        Constants.PREFERENCE_FILENAME, Activity.MODE_PRIVATE); 

      edt_kilo.setText(mSharedPreferences.getString(Constants.KILO_VAL,"")); 
      edt_pound.setText(mSharedPreferences.getString(Constants.POUND_VAL,"")); 

      if ((edt_centimeter.getText().toString().length() > 0) 
        || (edt_feet.getText().toString().length() > 0) 
        || (edt_inches.getText().toString().length() > 0)) { 
       imagelayout.setVisibility(View.VISIBLE); 

       super.onResume(); 
      } 
     } 

     @Override 
     protected void onPause() { 
      super.onPause(); 

      SharedPreferences.Editor edit = mSharedPref.edit(); 
      edit.putString(Constants.KILO_VAL, edt_kilo.getText().toString()); 
edit.putString(Constants.POUND_VAL,edt_pound.getText().toString()); 

      edit.commit(); 

     } 

    @Override 
     public void onBackPressed() { 

       this.finish(); 
     } 

위의 코드의 문제에도 장치의 "뒤로"버튼을 눌러 작업을 마친 후, 값은 아직도 내가 원하지 않는, 보존되어있다.

또한 edittext에서 값을 "지우고"장치의 "뒤로"버튼을 누르면 다시 올 때 동일한 값이 그대로 유지됩니다.

답변

0

이 같은 노력이 조건 처리 방법 :

public class TestActivity extends Activity{ 

    private String etFirstValue=""; 
    private String etSecondValue=""; 
    private EditText etTwo,etOne; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     //initaialize views here 
    } 

    /* (non-Javadoc) 
    * @see android.app.Activity#onRestoreInstanceState(android.os.Bundle) 
    */ 
    @Override 
    protected void onRestoreInstanceState(Bundle savedInstanceState) { 
     super.onRestoreInstanceState(savedInstanceState); 
     etFirstValue = savedInstanceState.getString("firstEditTextKey"); 
     etSecondValue = savedInstanceState.getString("secondEditTextKey"); 
    } 

    /* (non-Javadoc) 
    * @see android.app.Activity#onSaveInstanceState(android.os.Bundle) 
    */ 
    @Override 
    protected void onSaveInstanceState(Bundle outState) { 
     outState.putString("firstEditTextKey", "value"); 
     outState.putString("secondEditTextKey", "value"); 
     super.onSaveInstanceState(outState); 
    } 


    @Override 
    protected void onResume() { 
     super.onResume(); 
     //set the values to edit text 
     etOne.setText(etFirstValue); 
     etTwo.setText(etFirstValue); 

    } 

} 

이 링크를 통해 갈 수있는 간단한 explaination를 들어 : here

+0

나는 당신의 방법을 사용했으나, 주제를 바꿀 때 그 값은 각 edittext에 들어 있지 않습니다. – teekib

+0

당신이 얻고있는 것은 무엇입니까? –

+0

전혀 값 없음 – teekib

0

그것의 당신이 공유 환경 설정의 값을 설정하는 때문에 앱의 활동이 닫히고 열릴 때 공유 환경 설정이 지워지지 않습니다.

onStop()의 편집 텍스트에 null 값을 설정하거나 설정할 수있는 경우 환경 설정을 지울 수 있습니다.

+0

null 값을 설정하고 onStop() 메소드에서 공유 환경 설정을 지우려고했지만 액티비티가 다시 만들어지면 값은 유지되어야합니다. 그러나 itz not happenibng – teekib