Создание нескольких пользователей с SharedPreferences - PullRequest
0 голосов
/ 08 октября 2018

Привет всем, я пытаюсь создать небольшое приложение.Это приложение будет поддерживать до 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 голосов
/ 08 октября 2018

поэтому вы пытались установить разные имена для базы данных 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");
0 голосов
/ 08 октября 2018

Я думаю, что вы должны создать свой собственный класс, который будет содержать в полях данные, которые вам понадобятся.Кроме того, я предлагаю вам создать объект List вместо массива, чтобы иметь более удобные параметры, такие как List.size():

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

, а затем удерживайте его в Map с помощью пользовательского уникального ключа, чтобы легко получитьUserData в различных потребностях использования:

private Map<String, UserData> userDataMap = new HashMap<>();
0 голосов
/ 08 октября 2018

Как насчет использования числа в массиве для достижения этой цели?вероятно, что-то вроде этого:

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();
    }

}

При этом вы можете сохранить трех пользователей, а затем вызвать их из общих настроек с именем пользователя- (номером пользователя)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...