0

ユーザーに Play ストアでの評価を求めるアプリを開発しています。それはうまくいきます。ユーザーが評価ボタンを押すと、アプリの Play ストア ページが表示されます。[戻る] ボタンを押すと、アプリが前面に出て評価ダイアログが表示されます。dialog.dismiss()Play ストア インテントを開始する直前または直後に使用しましたが、ダイアログが消えず、そこにとどまります。

これが私のコードです、助けてください!

  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 に答える