Как сохранить параметры камеры в SharedPreferences? - PullRequest
1 голос
/ 28 июня 2011

Как сохранить состояние флажка и настройки камеры после уничтожения активности?

Или другими словами, как сохранить параметры камеры в SharedPreferences?

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.menu_old);
SharedPreferences preferences = 
getSharedPreferences("PREFS_NAME",MODE_WORLD_READABLE);

yourCheckBox = (CheckBox) findViewById( R.id.fonarb );
yourCheckBox.setChecked(preferences.getBoolean("lol",false));
yourCheckBox.setOnCheckedChangeListener(new OnCheckedChangeListener()

{
@Override
public void onCheckedChanged(CompoundButton   yourCheckBox,
        boolean isChecked) {
     if (isChecked){

         Parameters params = camera.getParameters();
         params.setColorEffect(Parameters.EFFECT_NEGATIVE);
         camera.setParameters(params);


     }
     else {     
         Parameters params = camera.getParameters();
         params.setColorEffect(Parameters.EFFECT_NONE);
         camera.setParameters(params);

     }

}


});

public void onStop(){
 SharedPreferences settings = getSharedPreferences("PREFS_NAME", MODE_WORLD_READABLE);
 SharedPreferences.Editor editor = settings.edit();
 editor.putBoolean("lol", true);


 editor.commit();
 super.onStop();
}

Сделал, как вы сказали, не хочет сохранять настройки!: (

    SharedPreferences preferences = getSharedPreferences("qwe",MODE_PRIVATE);
    yourCheckBox = (CheckBox) findViewById( R.id.fonarb );
    yourCheckBox.setChecked(preferences.getBoolean("lol",false));
    yourCheckBox.setOnCheckedChangeListener(new OnCheckedChangeListener()

    {
    @Override
    public void onCheckedChanged(CompoundButton   yourCheckBox,
            boolean isChecked) {
         if (isChecked){

             Parameters params = camera.getParameters();
             params.setColorEffect(Parameters.EFFECT_NEGATIVE);
             camera.setParameters(params);



         }
         else {     
             Parameters params = camera.getParameters();
             params.setColorEffect(Parameters.EFFECT_NONE);
             camera.setParameters(params);

         }

    }


    });









    protected void onPause()

   {
        SharedPreferences settings = getSharedPreferences("qwe",MODE_PRIVATE);
    SharedPreferences.Editor editor = settings.edit();
    yourCheckBox = (CheckBox) findViewById( R.id.fonarb );
    editor.putBoolean("lol", yourCheckBox.isChecked());
    editor.commit();
        super.onPause();
     }

1 Ответ

0 голосов
/ 28 июня 2011

Вместо того, чтобы всегда хранить «true» в SharedPreferences, просто сохраните текущее состояние CheckBox.

SharedPreferences settings = getSharedPreferences("PREFS_NAME", MODE_WORLD_READABLE);
SharedPreferences.Editor editor = settings.edit();
CheckBox yourCheckBox = (CheckBox) findViewById( R.id.fonarb );
editor.putBoolean("lol", yourCheckBox.isChecked());
editor.commit();

Вы также можете рассмотреть возможность перемещения этого кода в onPause () вместо onStop ().Операционная система (pre-Honeycomb) может убить вашу активность, если она была приостановлена, даже не вызывая onStop ().Если это произойдет, ваши SharedPreferences не будут сохранены.

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