我正在开发一款应用,要求用户在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()
方法中调用它。
答案 0 :(得分:1)
您忘记在commit()
=>上致电appdataEditor
了放置布尔值后appdataEditor.commit()
。
另请注意,由于活动生命周期,一旦活动回到前台再次调用OnStart()
,因此再次调用rateDialog()
,如果这是您的设计,然后忽略这部分..
答案 1 :(得分:0)
这种情况正在发生,因为您在onStart()中调用它。