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); 

    } 

} 

для кратких объяснений вы можете пройти по этой ссылке: here

+0

Я использовал ваш метод, но когда я меняю тему, значения не поступают в соответствующий edittext – teekib

+0

, что вы получаете? –

+0

no values ​​на всех – teekib

0

Его, потому что вы устанавливаете значения из общих предпочтений и общие настройки не очищаются, когда активность приложения закрыта и открыта.

Вы можете либо очистить настройки, если можете, либо задать нулевые значения для текста редактирования в onStop().

+0

Я пробовал как устанавливать нулевые значения, так и очищать общие предпочтения в методе onStop(), но когда активность становится воссозданной, значения должны оставаться .. но itz noteveribng – teekib

Смежные вопросы