Android - 制作我自己的Preference布局

时间:2015-07-19 19:00:12

标签: android xml sharedpreferences

我需要使用SharedPreference在我的应用程序中保存登录名,密码和其他字符串,但我不想使用默认布局的首选项。

我已阅读过SharedPref的文档:http://developer.android.com/guide/topics/ui/settings.html#ReadingPrefs

但是......哼。 我创建了一个名为preferences_dashboard的类。 在这个课程中,如果选中了checkbow,我会备份登录等,如果未选中该复选框,则删除备份。

有我的代码:

public void saveID(View v) {

    // strMessage is the message with appears when clicking on Checkbox
    String strMessage = "";

    CheckBox chkBoxSaveID;
    chkBoxSaveID = (CheckBox) findViewById(R.id.preferencecheckBoxSaveID);
    boolean chkBoxSaveIDState = chkBoxSaveID.isChecked();

    SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPreferences.edit(); // Put the values from the UI

    if (chkBoxSaveID.isChecked()) {

        // Backup LOGIN

        String userLogin ="Administrator2";
        String userPassword = "password2";
        String userDomain = "12";

        editor.putString("KEY_USER_LOGIN", userLogin); // Storing string
        editor.putString("KEY_USER_PASSWORD", userPassword); // Storing string
        editor.putString("KEY_USER_DOMAIN", userDomain); // Storing string
        editor.putBoolean("stateChkBoxMemorizeID", chkBoxSaveIDState); // value to store
        editor.commit(); // commit changes

        strMessage += "ID memorized" + "KEY_USER_DOMAIN" + userPassword + userDomain;
        showTextNotification(strMessage);
    } else {

        // No backup LOGIN
        editor.remove("KEY_USER_LOGIN"); // will delete key name
        editor.remove("KEY_USER_PASSWORD");
        editor.remove("KEY_USER_DOMAIN");
        editor.putBoolean("stateChkBoxMemorizeID", chkBoxSaveIDState); // value to store
        editor.commit(); // commit changes

        strMessage += "Login is not memorized ";
        showTextNotification(strMessage);
    }
} // end saveID

我想我真的不明白如何使用SharedPreferences。 字符串登录/通过/域是固定的测试。之后,我将重新讨论其他活动的变量。

我的问题:

  1. 这些变量将备份在哪里?在data / date / nameappli / xml中生成?或者在defaultSharedPreference?
  2. 我错过了什么? :(
  3. 感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

改为使用:

SharedPreferences sharedPreferences = getSharedPreferences("customSharedPrefs", Context.MODE_PRIVATE);

通过这种方式,您可以使用单独的SharedPreferences来存储所需的信息。你可以说出任何东西。只需将名称作为字符串传递,就像我使用"customSharedPrefs"一样。 因此,您可以使用不同的名称创建多个SharedPreferences