Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在打开应用程序并将数据存储到首选项时生成提示编辑文本对话框?_Android_Dialog_Preference - Fatal编程技术网

Android 如何在打开应用程序并将数据存储到首选项时生成提示编辑文本对话框?

Android 如何在打开应用程序并将数据存储到首选项时生成提示编辑文本对话框?,android,dialog,preference,Android,Dialog,Preference,我读过很多文章,但都将设置一个首选项屏幕,然后单击一个首选项,比如编辑文本,然后它会提示编辑文本对话框。现在我只想有一个对话框,当应用程序第一次创建时会提示,并将输入数据存储到首选项中。在这种情况下我可以使用DialogPreference吗 是的,你当然可以。。。首先,在创建活动时创建- boolean firstrun = getSharedPreferences("PREFERENCE", MODE_PRIVATE).getBoolean("firstrun", true); 然后检查

我读过很多文章,但都将设置一个首选项屏幕,然后单击一个首选项,比如编辑文本,然后它会提示编辑文本对话框。现在我只想有一个对话框,当应用程序第一次创建时会提示,并将输入数据存储到首选项中。在这种情况下我可以使用DialogPreference吗

是的,你当然可以。。。首先,在创建活动时创建-

boolean firstrun = getSharedPreferences("PREFERENCE", MODE_PRIVATE).getBoolean("firstrun", true); 
然后检查-

boolean firstrun = getSharedPreferences("PREFERENCE", MODE_PRIVATE).getBoolean("firstrun", true); 
if (firstrun) {
//Call HERE your showDialog, for example...
 showDialog(DIALOG_TEXT_ENTRY1);
} 
最后一个-只需覆盖onCreateDialog…-

boolean firstrun = getSharedPreferences("PREFERENCE", MODE_PRIVATE).getBoolean("firstrun", true); 
 @Override
protected Dialog onCreateDialog(int id) {
    switch (id) {
    //main title
    case DIALOG_TEXT_ENTRY1:
         LayoutInflater factorymain = LayoutInflater.from(this);
         final View textEntryViewMain = factorymain.inflate(R.layout.main_title_dialog, null);  
.................
............ 
通过如上所示的LayoutFlater,您可以显示任何布局以及您想要的任何editText对象……

在获取其“true”值后,不要忘记在首选项中保存“firstrun”标记:

boolean firstrun = getSharedPreferences("PREFERENCE", MODE_PRIVATE).getBoolean("firstrun", true); 
因此,您不会始终获得“真实”值。 顺便说一句,将所有常量作为静态最终属性是一种最佳做法,这样您就不会更改拼写错误的“firstrun”,例如

boolean firstrun = getSharedPreferences("PREFERENCE", MODE_PRIVATE).getBoolean("firstrun", true);