我创建了一个Dialog,每次用户打开App时都会打开。由于这可能会非常快速地惹恼用户,我想在第一次启动应用程序时打开它,然后才开始。
我试过以下:
public boolean openDialog = true;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (openDialog) {
launchDialog();
}
}
private void launchDialog() {
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
context);
// set title
alertDialogBuilder.setTitle("Your Title");
// set dialog message
alertDialogBuilder
.setMessage("Click yes to exit!")
.setCancelable(false)
.setPositiveButton("Yes",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id) {
//don't open Dialog by next launch
openDialog = false;
// if this button is clicked, close
// current activity
MainActivity.this.finish();
}
})
.setNegativeButton("No",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id) {
// if this button is clicked, just close
// the dialog box and do nothing
dialog.cancel();
}
});
// create alert dialog
AlertDialog alertDialog = alertDialogBuilder.create();
// show it
alertDialog.show();
}
感谢您的帮助
阿德里安
答案 0 :(得分:3)
您可以使用简单的sharedPreferences:
private SharedPreferences mPrefs;
private Editor mEditor;
初始化:
mPrefs = PreferenceManager.getDefaultSharedPreferences(context);
mEditor = mPrefs.edit();
然后当对话框第一次出现时,保存状态,例如:
mEditor.putBoolean(FIRST_TIME_USED_KEY,true);
mEditor.commit();
当应用程序再次打开时,首先询问对话框是否已打开:
boolean isUsedBefore = mPrefs.getBoolean(FIRST_TIME_USED_KEY,false);
if(isUsedBefore==true){
//do nothing
}else{
dialog.show();
}
FIRST_TIME_USED_KEY应该是存储在strings.xml中的字符串。
答案 1 :(得分:1)
实现这一目标的方法有多种。
方法1:
Use of shared preference
每当用户第一次打开时,都会在共享首选项中设置状态,并在每次需要显示对话框时进行检查。
注意:@Opiatefuchs提到同样的事情。
方法2:
Use database
。这是第一次更新状态。如果对话框需要显示,则下次检查数据库。
基本上两种方法都以类似的方式工作。选择你最好的。
答案 2 :(得分:0)
将openDialog变量设为静态,使其位于类的范围内而不是实例:
public static boolean openDialog = true;
为获得最佳用户体验,您可以显示对话框:
1。每个时间间隔(例如:2天) 2。每次运行应用程序(每5次)。
您可以将这两个因素结合起来,您可以使用shared preferences类在偏好设置中保存一些值。