【问题标题】:How can i add multiple entries in a shared prefrences file如何在共享首选项文件中添加多个条目
【发布时间】:2013-09-16 09:36:47
【问题描述】:

你能告诉我如何使用共享首选项在共享首选项文件中写入多个条目。就像我想在共享首选项文件中添加多个名称一样 我正在使用以下代码,但每次单击提交按钮时,它都会覆盖上一个条目。

public void onClick(View v) 
{           
    SharedPreferences settings = getSharedPreferences("users", 0);
    SharedPreferences.Editor editorUser = settings.edit();
    editorUser.putString("user", editUser.getText().toString());
    editorUser.commit();
}

【问题讨论】:

  • 您只能保存一个与特定键关联的值。
  • 如何保存多个?
  • 这个想法很简单。使用不同的键来保存不同的值。
  • 您是否使用相同的 EditText 来保存用户?
  • 是的。我用的是同一个

标签: android sharedpreferences


【解决方案1】:

你必须使用不同的键,例如:

            SharedPreferences settings = getSharedPreferences("users", 0);

            SharedPreferences.Editor editorUser = settings.edit();
            for (int i = 0; i < users.size(); i++) 
                 editorUser.putString("user" + i, users.get(i));

            editorUser.commit();

【讨论】:

  • 如果我有 n 个用户怎么办
  • 这可能会产生问题,因为 sharedPref 会持久保存它并且没有检查用户是否已经存在。
  • Szymom 的答案是正确的,如果您使用共享偏好来保存数据。尝试使用数据库,这是另一种存储数据并检查用户是否已经存在的方式
  • 共享首选项旨在存储简单的东西而没有太多复杂性。此外,问题不在于不覆盖相同的密钥(至少我是这么理解的)。
  • 我是 android 的新手。你能告诉我如何使用不同的键来存储值吗。请任何人。
【解决方案2】:

您正面临这个最重要的问题,因为您每次都使用相同的共享首选项key 来保存value。假设您对多个条目使用相同的EditText,我想下面的 sn-p 就可以了。

counter=0;
        save.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                  settings = getSharedPreferences("users", 0);
                    SharedPreferences.Editor editorUser = settings.edit();
                    editorUser.putString("user"+counter, Edittext.getText().toString());
                    editorUser.commit();
                    counter++;
                    Edittext.setText("");
            }
        });
        show.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {


                for(int i=0;i<counter;i++)
                {
                    Log.i("User "+i, ""+settings.getString("user"+i, ""));
                }
            }
        });

在这里,我使用show 按钮OnClickListner 只是通过EditText 检查多个条目。但是在这里,如果您真的希望存储多个用户信息,我建议您使用 SQLite DB。

【讨论】:

    【解决方案3】:

    你可以这样做

    通过这 2 个 URL 来帮助你

    vogella.

    mobile.tutsplus.com

    保存

     public void saveInformation(String username,String password) {
            SharedPreferences shared = getSharedPreferences("shared", MODE_PRIVATE);
            SharedPreferences.Editor editor = shared.edit();
            editor.putString("username", username);
            editor.putString("password", password);
            editor.commit();
        }
    

    加载

    private void LoadPreferences(){
        SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
        String username = sharedPreferences.getString("username", "");
        String password = sharedPreferences.getString("password", "");
    
       }
    

    编辑

     private void editDate(){
        SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit();
        editor.putString("username", mSaved.getText().toString());
        editor.putInt("selection-start", mSaved.getSelectionStart());
        editor.putInt("selection-end", mSaved.getSelectionEnd());
        editor.commit();
       }
    

    要保存多个用户数据,建议您为每个用户创建多个文件,然后将其保存在共享首选项中

    从这里Diffrence Link

    了解 getDefaultSharedPreferencesgetSharedPreferences 之间的差异

    【讨论】:

    • 感谢 Gaurav 的回复,但我不明白,看起来相同的代码以不同的方式编写。
    • 这是一个函数,只需将参数传递给这个函数。然后像我为用户名和密码所做的那样添加所有内容。并从你想保存数据的地方调用它
    • @user2783369 看到我已经更新了我的答案如果你需要任何帮助让我知道
    • 我正在尝试使用此代码,但它不适合我 Gaurav:(
    • 实际上你需要在共享首选项中保存多个用户的详细信息我正在更新我的答案,确保它会对你有所帮助
    猜你喜欢
    • 2021-10-13
    • 2011-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-12
    • 1970-01-01
    相关资源
    最近更新 更多