在启动时创建EditTextPreference对话框

时间:2013-06-15 18:33:58

标签: android android-layout dialog android-preferences

我知道这很简单,但这里从未明确回答:Want to display a dialog only once after the app been installed。有人可以举例说明我可以在MainActivity类中进行的对话调用吗?

具体来说,我需要检查Parse数据库中是否存在该值。如果是,则允许用户继续。否则,请不要关闭对话框并等待它们添加新用户名。

XML看起来像这样:

<PreferenceCategory android:title="@string/pref_user_profile" >
    <EditTextPreference
        android:key="prefUsername"
        android:summary="@string/pref_user_name_summary"
        android:title="@string/pref_user_name" />
</PreferenceCategory>

2 个答案:

答案 0 :(得分:1)

检查偏好是否已返回&#34;默认,&#34;如果是,则显示一个对话框并将这些值提交给首选项

Editor editor = prefs.edit();

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());

String p = prefs.getString("prefUsername", "default");

    if (p.equals("default")) {
        createDialogBox();
        p = prefs.getString("prefUsername", "default");
    }


public void createDialogBox() 
        {

    final EditText et = new EditText(this);
    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);

    // set title
    alertDialogBuilder.setTitle("Please give Input");

    // set dialog message
    alertDialogBuilder
            .setMessage("Input")
            .setView(et)
            .setCancelable(false)
            .setPositiveButton("OK", new    DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {

                    String c = et.getText().toString().trim();
                    editor.putString("prefsUsername", c);
                    editor.commit();
                }
            })
            .setNegativeButton("Cancel",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {

                            dialog.cancel();
                        }
                    });

    // create alert dialog
    AlertDialog alertDialog = alertDialogBuilder.create();

    // show it
    alertDialog.show();
}

答案 1 :(得分:0)

很好,这个问题得到了解答!

  

使用SharedPreference存储第一个值,并根据该值检入启动活动。如果设置了该值,则无需显示该对话框。如果是,则显示对话框并在SharedPreference中保存firstrun标志。   ex(在您的启动活动中):

public void onCreate(){
boolean firstrun = getSharedPreference("PREFERENCE", MODE_PRIVATE).getBoolean("firstrun", true);
if (firstrun){
    ...Display the dialog
    // Save the state
    getSharedPreference("PREFERENCE", MODE_PRIVATE)
        .edit()
        .putBoolean("firstrun", false)
        .commit();
}

}