使用SharedPreferences创建多个用户

时间:2018-10-07 21:59:06

标签: java android sharedpreferences

大家好,我尝试创建一个小型应用程序。此应用程序最多可容纳3位用户。我正在使用Sharedpreferences保存数据。但是我无法保存多个用户,我也不知道该怎么做。创建用户后,我想在他们之间交换,并且我不为用户使用密码,因此系统始终可以在用户之间更改。

有我的MainActivity。

public class MainActivity extends AppCompatActivity {

    EditText nameText;
    EditText dateText;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        nameText = (EditText) findViewById(R.id.nameText);
        dateText = (EditText) findViewById(R.id.dateText);
    }

    public void saveInfo(View view) {
        SharedPreferences sharedPref = getSharedPreferences("userInfo", Context.MODE_PRIVATE);
        SharedPreferences.Editor editor =  sharedPref.edit();
        editor.putString("username",nameText.getText().toString());
        editor.putString("date",dateText.getText().toString());
        editor.apply();
    }
}

感谢您的建议。

3 个答案:

答案 0 :(得分:0)

如何在数组中使用数字来实现这一目标?大概是这样的:

public void saveInfo(View view,User[] userList) 
{

    SharedPreferences sharedPref = getSharedPreferences("userInfo", Context.MODE_PRIVATE);
    SharedPreferences.Editor editor =  sharedPref.edit();
    for (int i = 0, i < userList.count){
         User user = userList[i]
         editor.putString("username-"+i,user.username);
         editor.putString("date-"+i,user.date);
         editor.apply();
    }

}

这样,您可以保存三个用户,然后使用用户名-(用户数)从共享首选项中调用它们

答案 1 :(得分:0)

那么您是否尝试为每个用户为sharedPreference数据库设置不同的名称?

public void saveInfo(View view,User[] userList) 
{
    for (int i = 0, i < userList.count){
         User user = userList[i];

        // I am creating a new shared prefence for each user!
        // by their username.
         SharedPreferences sharedPref = getSharedPreferences("userInfo_"+user.username.trim(), Context.MODE_PRIVATE);

    SharedPreferences.Editor editor =  sharedPref.edit();

         editor.putString("username",user.username);
         editor.putString("date",user.date);
         editor.apply();
    }

}

在那之后,要获取特定用户的数据,您只需要他们的用户名:

SharedPreferences sharedPref = getSharedPreferences("userInfo_"+user.username.trim(), Context.MODE_PRIVATE);

String userDate = sharedPref.getString("date", "unknown");

答案 2 :(得分:0)

我认为您应该创建自己的类,该类将保存需要的字段数据。另外,建议您创建一个List对象,而不要使用数组来拥有更舒适的选项,例如List.size()

UserData userData = new UserData(View view, List<User> users);

然后使用您的自定义唯一密钥将其保存在Map中,以便轻松获得UserData的各种使用需求:

private Map<String, UserData> userDataMap = new HashMap<>();