Android应用评级对话框不会关闭

时间:2013-06-10 09:35:18

标签: android dialog alertdialog dismiss rate

我正在开发一款应用,要求用户在Play商店中对其进行评分。它运作良好。如果用户按下“费率”按钮,则会转到该应用的“Play商店”页面。如果你按下后退按钮,我的应用程序会显示在前面,显示评级对话框。我在启动Play商店意图之前或之后使用dialog.dismiss(),但对话框不会被忽略,它会保留在那里。

这是我的代码,请帮助我!

  private void rateDialog() {

        AlertDialog.Builder mDialogBuilder;

        mDialogBuilder = new AlertDialog.Builder(MainActivity.this);
        mDialogBuilder.setCancelable(true);
        mDialogBuilder.setTitle(getString(R.string.title_RateDialog));

        if (!appdata.getBoolean(Constants.IS_RATE_IGNORED, false) && (appdata.getInt(Constants.START_COUNT, 1) % 4) == 0) {
            mDialogBuilder.setMessage(getString(R.string.text_RateDialogMessage));
            mDialogBuilder.setPositiveButton(R.string.text_OK,
                    new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int id) {
                            appdataEditor.putBoolean(Constants.IS_RATE_IGNORED, true);
                            dialog.dismiss();
                            try{
                                startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(Constants.PLAY_STORE_URL)));
                            } catch (ActivityNotFoundException e){
                                Toast.makeText(getApplicationContext(), "Could not open market page.", Toast.LENGTH_LONG).show();
                            }
                        }
                    });
            mDialogBuilder.setNeutralButton(getString(R.string.text_NotNow),
                    new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int id) {
                            dialog.dismiss();
                        }
                    });
            mDialogBuilder.setNegativeButton(getString(R.string.text_Never),
                    new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialogInterface, int id) {
                            appdataEditor.putBoolean(Constants.IS_RATE_IGNORED, true);
                        }
                    });

            AlertDialog rateDialog = mDialogBuilder.create();
            rateDialog.show();
        }
    }

我在onStart()方法中调用它。

2 个答案:

答案 0 :(得分:1)

您忘记在commit() =>上致电appdataEditor了放置布尔值后appdataEditor.commit()

另请注意,由于活动生命周期,一旦活动回到前台再次调用OnStart(),因此再次调用rateDialog(),如果这是您的设计,然后忽略这部分..

答案 1 :(得分:0)

这种情况正在发生,因为您在onStart()中调用它。