После закрытия приложения общий преф булево значение равно false - PullRequest
0 голосов
/ 09 мая 2018

В заставке проверьте условие, если условие ложно, появится диалоговое окно. В окне Журнал набора, если пользователь принимает условие общего доступа, логическое значение будет истинным. Если пользовательский щелчок отменяет, логическое значение SharedPref будет ложным. Как только пользователь примет условие, диалоговое окно «Не нужно показывать» в приложении, открывающем функцию.

Для меня открывается диалоговое окно приложения грядет, потому что всегда " False " грядет логическое значение. Я не мог понять, где я сделал ошибку, Не могли бы вы мне помочь.

Boolean value is getting false every time.
public static final String Alert_Dialog = "AlertDialog";
static SharedPreferences settings;
public static SharedPreferences.Editor editor;
settings=getSharedPreferences(Alert_Dialog, 0);
    editor = settings.edit();
if(settings.getBoolean("Alert_Dialog", false)==false){
Toast.makeText(SplashScreen.this,"False cond=="+settings.getBoolean("Alert_Dialog", false),Toast.LENGTH_LONG).show();
            UserAgreement();
    }else if(settings.getBoolean("Alert_Dialog", false)==true){
Toast.makeText(SplashScreen.this,"True cond=="+settings.getBoolean("Alert_Dialog", false),Toast.LENGTH_LONG).show();
     Intent intentHActivity = new Intent(this, HActivity.class);
            startActivity(intentHActivity);
    }

@SuppressLint("StringFormatInvalid")
private void UserAgreement() {

    final Dialog openDialog1 = new Dialog(context);
    openDialog1.setContentView(R.layout.dialog_box_layout);
    Button dialogAgreeButton = (Button)openDialog1.findViewById(R.id.dialog_agree_button);
    TextView cancleTV1= (TextView)openDialog1.findViewById(R.id.dialog_cancle_tv);
dialogAgreeButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            editor.putBoolean("Alert_Dialog", true);               Toast.makeText(SplashScreen.this,"accept==="+settings.getBoolean("Alert_Dialog", false),Toast.LENGTH_LONG).show();

            Intent intent = new Intent(this, nextActivity.class);
            startActivity(intent);

        }
    });
    cancleTV1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            editor.putBoolean("Alert_Dialog", false);
            Toast.makeText(SActivity.this,"cancle==="+settings.getBoolean("Alert_Dialog", false),Toast.LENGTH_LONG).show();
            moveTaskToBack(true);
            finish();
        }
    });

    openDialog1.show();
    openDialog1.setCanceledOnTouchOutside(false);


    openDialog1.setOnKeyListener(new DialogInterface.OnKeyListener() {
        @Override
        public boolean onKey(DialogInterface dialogInterface, int keyCode, KeyEvent keyEvent) {
            if(keyCode == KeyEvent.KEYCODE_BACK && keyEvent.getAction() == KeyEvent.ACTION_UP)
            {
                moveTaskToBack(true);
                finish();
            }
            return false;
        }

    });
    editor.commit();

}

Ответы [ 3 ]

0 голосов
/ 09 мая 2018

вы должны совершить коммит после установки чего-либо в общих настройках, как это editor.apply()

       public void onClick(View v) {
            editor.putBoolean("Alert_Dialog", true); 
            editor.apply()                  

            Intent intent = new Intent(this, nextActivity.class);
            startActivity(intent);

        }

Примечание: editor.apply () сразу после editor.putBoolean ("Alert_Dialog", true)

0 голосов
/ 09 мая 2018

Вызов Editor.commit () выполняется до фактического putBoolean. PutBoolean вызывается только onClick, но вызов commit уже выполняется, когда появляется диалоговое окно, то есть до того, как были внесены какие-либо изменения. Просто назовите это как editor.putBoolean("Alert_Dialog", false).commit() и все будет хорошо.

0 голосов
/ 09 мая 2018

Проверьте свои dialogAgreeButton.setOnClickListener() Вы просто забыли зафиксировать свои изменения в SharedPreferences

Используйте editor.apply(); ИЛИ editor.commit() для фиксации изменений в SharedPreferences

FYI

Всякий раз, когда вы изменяете значение в SharedPreferences, используйте commit() или apply(), чтобы зафиксировать ваши настройки, и обратно из этого редактора на объект SharedPreferences, который он редактирует.

Измените свой код следующим образом

dialogAgreeButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            editor.putBoolean("Alert_Dialog", true);   
            editor.apply();   
            Toast.makeText(SplashScreen.this,"accept==="+settings.getBoolean("Alert_Dialog", false),Toast.LENGTH_LONG).show();

            Intent intent = new Intent(this, nextActivity.class);
            startActivity(intent);

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