Как узнать, какая последняя кнопка была нажата в Android с использованием sharedpreference? - PullRequest
0 голосов
/ 04 ноября 2019

У меня есть две кнопки. Теперь, как я могу узнать, что последняя кнопка была нажата с использованием sharedpreference при повторном запуске действия?

код:

private SharedPreferences sharedPreferences;

Редактор SharedPreferences.Editor;

init в onCreate:

sharedPreferences = getSharedPreferences ("MyPref", Context.MODE_PRIVATE);

editor = sharedPreferences.edit ();

Я пытался сделать это, но совершенно не так

        if (sharedPreferences.getString("lamp", "on")) {

        Toast.makeText(this, "onnnn", Toast.LENGTH_SHORT).show();
    }
    if (sharedPreferences.getString("lamp", "off")){
        Toast.makeText(this, "offfff", Toast.LENGTH_SHORT).show();
    }

первая кнопка

 public void lampOff(View view) {
    Log.d(tag, "lampOFF");

    lamp_notConnected_Image.setVisibility(View.INVISIBLE);
    lamp_Connected_Image.setVisibility(View.VISIBLE);



    editor.putString("lamp", "off");
    editor.commit();
}

вторая кнопка:

 public void lampOn(View view) {
    Log.d(tag, "lampO");

    lamp_notConnected_Image.setVisibility(View.VISIBLE);
    lamp_Connected_Image.setVisibility(View.INVISIBLE);

    editor.putString("lamp", "on");
    editor.commit();
}

Ответы [ 2 ]

1 голос
/ 04 ноября 2019

Вам необходимо проверить значение общего предпочтения в методе onCreate, например:

if (sharedPreferences.getString("lamp", "off").equals("on")) { //assumed "off" as default
    Toast.makeText(this, "onnnn", Toast.LENGTH_SHORT).show();
    // on button is pressed last time
}
else{
    Toast.makeText(this, "offfff", Toast.LENGTH_SHORT).show();
            // off button is pressed last time or no button press so far
}
1 голос
/ 04 ноября 2019

Проблема заключается в вашем состоянии if (sharedPreferences.getString("lamp", "on")), вы не сравниваете эту строку ни с чем, либо используйте

if (sharedPreferences.getString("lamp", "on").equals("on"))

или

, сохраните значение как логическое editor.putBoolean("lamp", true);,затем вы можете сравнить, как вы это делали: if (sharedPreferences.getString("lamp", true))

Обратите внимание, что здесь («лампа», «вкл.») первый параметр - это идентификация, а второй - значение по умолчанию, если ничего не происходит. там еще хранится.

Подробнее в SharedPreferences

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