java - 应用程序首次启动时应打开对话窗口

标签 java android

我创建了一个对话框,每次用户打开应用程序时都会打开该对话框。因为这可能会很快打扰用户,所以我想在第一次启动应用程序时打开它,并且只有在那时才打开它。

我试过以下:

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();
}

感谢帮助

阿德里安

最佳答案

您可以使用简单的 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 中的字符串。

关于java - 应用程序首次启动时应打开对话窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28279604/

相关文章:

android - 计算 SQLITE 中单条记录的百分比

android - 当用户靠近特定位置时向用户发送警报

java - 在 jframe 中显示 jpanel 的图形界面

java - 在慢速和快速连接上写入套接字的速度差异?

java - 将对象传递给另一个 Activity

android - 如何缩小按钮上的可绘制对象?

java - ManagedExecutorService 从 1.0 开始?

java - 当我调用 from 方法时,servlet 不会调用

java - 某些 Zip 文件无法通过 java 代码在露天正确提取

java - Branch.io (Android SDK) 和 GDPR