我正在创建AlertDialogonBackPressed,其中包含退出和速率应用程序按钮。
AlertDialog将只显示一次如果Person Rate应用程序,则该部分工作正常。
但问题是,在有人对应用程序进行评级、布尔值更改之后,应用程序将不会显示AlertDialog,因此onBackPressed将被禁用。我怎样才能改变?
这是我的代码:

 @Override
    public void onBackPressed() {

        final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
        if (!prefs.getBoolean("firstTime", false)) {
    new AlertDialog.Builder(this)
    .setCancelable(false)
        .setTitle("Rate us")
        .setMessage("Thank you for choosing our app! We will be very thankful if you can spend your valuable time to give this app a good rate in Google Play market!")
        .setPositiveButton("Rate us", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                Uri uri = Uri.parse("market://details?id=" + getPackageName());
    Intent intent = new Intent(Intent.ACTION_VIEW, uri);
    startActivity(intent);

    SharedPreferences.Editor editor = prefs.edit();
          editor.putBoolean("firstTime", true);
          editor.commit();
            }
         })
        .setNegativeButton("Exit", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                ((Activity) context).finish();
            }
         })

         .show();


        };

    }


  }

我补充说
if (!prefs.getBoolean("firstTime", true)){
            ((Activity) context).finish();
}

但它什么也没做。onbackpressed仍然被禁用。
总结:第一次更改布尔值后,onbackpressed被禁用,我不能使用该按钮离开/关闭应用程序。我该怎么解决?

最佳答案

简单,只需添加其他部分来处理如下:

@Override
    public void onBackPressed() {
        super.onBackPressed();


        final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
        if (!prefs.getBoolean("firstTime", false)) {
            //show your dialog
        }else{
            super.onBackPressed();
        }
    }

关于android - 更改SharedPreferences后,AlertDialog onBackPressed不会发生,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23405146/

10-10 02:17