我在使用自定义对话框时遇到问题,我创建了自定义对话框,它可以正常工作,但是如果用户单击按钮,则无法再显示一次,我对此感到困惑。就像有一个名为“评分”的按钮,当用户单击该按钮时,自定义对话框将永远不会再次打开。因此,如果有人知道该怎么做,请帮助我

这是我的代码

   final Dialog dialogrul = new Dialog(MainActivity.this);
    dialogrul.requestWindowFeature(Window.FEATURE_NO_TITLE);
    WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
    Window window = dialogrul.getWindow();
    window.setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT);
    dialogrul.setContentView(R.layout.exitlayout);
    Button rating = dialogrul.findViewById(R.id.ratingok);
    Button dialogok = dialogrul.findViewById(R.id.exityes);
    final Button dialognotok = dialogrul.findViewById(R.id.exitno);

    dialogrul.setCancelable(true);
    dialogrul.show();
    dialogok.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            MainActivity.this.onSuperBackPressed();
            finish();

        }
    });
    rating.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent j = new Intent(android.content.Intent.ACTION_VIEW);
            j.setData(Uri.parse("https://play.google.com/store/apps/details?"));
            startActivity(j);
        }
    });
    dialognotok.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            dialogrul.cancel();

        }
    });

}

最佳答案

如果您要确定用户是否在Playstore中对应用程序进行了评分,则没有适当的方法,这是有充分理由的。如果应用程序能够确定对应用程序进行评分的用户,则他们可以为高评分提供奖励,而为低评分提供“惩罚”。

取而代之的是,


让用户使用该应用5次,以获得良好的使用体验。
在第6次运行时提示用户使用YesLaterNever选项对其进行评分。稍后将其延迟“ n”(您选择的)天。


现在,要确定用户之前选择的是Yes还是Never,可以将值存储在SharedPreference中。

在首选项中设置值:

// MY_PREFS_NAME - a static String variable like:
//public static final String MY_PREFS_NAME = "MyPrefsFile";
SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE).edit();
 editor.putString("rating_choice", user_choice);
 editor.apply();


从首选项中检索数据:

SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
String restoredText = prefs.getString("text", null);
String name = prefs.getString("rating_choice", "Later");//"Later" is the default value.


参考:123

10-01 21:43