【问题标题】:Android - Make my own layout of PreferenceAndroid - 制作我自己的 Preference 布局
【发布时间】:2015-07-19 19:00:11
【问题描述】:

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

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

但是.. 嗯。 我创建了一个名为preferences_dashboard 的类。 在此类中,如果选中了复选框,则备份登录等,如果未选中复选框,则删除备份。

这是我的代码:

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. 我错过了什么? :(

感谢您的帮助。

【问题讨论】:

    标签: android xml sharedpreferences


    【解决方案1】:

    改为使用:

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

    这样,您就有了一个单独的 SharedPreferences 来存储您想要的信息。你可以给它起任何名字。只需将名称作为字符串传递,就像我使用的"customSharedPrefs" 一样。 因此,您可以创建多个不同名称的SharedPreferences

    【讨论】:

    • 好的,谢谢您的回答。所以,在编辑之后,我需要这个: SharedPreferences.Editor editor = sharedPreferences.edit();和 editor.putString("KEY_USER_LOGIN", userLogin);将创建一个名为“KEY_USER_LOGIN”的条目,其值为 userLogin ?
    • 是的。这样就可以了。它将被存储在这个customSharedPrefs SharedPreference 中。并且不要忘记使用 editor.apply();
    • 已经做过,但我错过了声誉,它不起作用,stackoverflow 拒绝我的意见 :)
    猜你喜欢
    • 1970-01-01
    • 2017-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多