0

我正在开发一个应用程序,要求用户在 Play 商店中对其进行评分。它运作良好。如果用户按下“Rate”按钮,则会进入应用程序的 Play 商店页面。如果你按下后退按钮,我的应用程序会在前面显示评级对话框。我dialog.dismiss()在启动 Play Store 意图之前或之后使用过,但对话框不会消失,它会停留在那里。

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

  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()方法中调用它。

4

2 回答 2

1

commit()在放置布尔值后,您忘记调用appdataEditor=> 。appdataEditor.commit()

还要记住,由于活动的生命周期,OnStart()一旦活动回到前台,就会再次调用,因此rateDialog()再次调用,如果这是你的设计,那么忽略这部分..

于 2013-06-10T09:42:58.170 回答
0

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

于 2013-06-10T09:46:41.457 回答