Вход в систему с общими предпочтениями
Я пытаюсь сохранить учетные данные для входа в систему на одном экране (login.java) и пытаюсь получить это при входе пользователя в систему и пытаюсь получить его при другой активности (loggedin.java), но этого не происходит.
login.java
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
{
SharedPreferences pref = getApplicationContext().getSharedPreferences("Mypref", 0);
SharedPreferences.Editor editor = pref.edit();
{
editor.putString("email", e1.getText().toString());
editor.putString("password", e2.getText().toString());
editor.commit();
String email = pref.getString("email", null);
t.setText(email);
//Log.e("email",email);
}
}
loggedin.java
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.accinfo);
t1 = (TextView) findViewById(R.id.textView3);
t2 = (TextView) findViewById(R.id.textView4);
SharedPreferences pref = getSharedPreferences("MYPref", 0);
String email = pref.getString("email", null);
String password = pref.getString("password", null);
t1.setText(email);
t2.setText(password);
}}
вывод идет NULL, вместо учетных данных пользователей
3 ответа
Вы должны помнить имена, которые вы даете, поскольку это чувствительно к регистру.
MYPref - Mypref
У вас есть два разных имени, когда вы вызываете SharedPreferences, проверяете строки и, возможно, используете глобальную переменную, чтобы не пропустить ввод:)
MYPref - Mypref
В любом случае, если вам нужно использовать их во всем приложении, вы можете создать класс (файл.java) и использовать статические значения, например:
public class LoggedUser{
public static String email;
public static String password;
//getters and setters
}
Если вы назначите им значение при входе пользователя в систему, они будут заполнены по всему приложению, не вызывая каждый раз sharedPrefs
Простое и элегантное решение - использовать очень простую библиотеку TinyDB в Android, которая является не чем иным, как абстракцией над общими настройками.
Вы можете инициализировать его в своей деятельности onCreate()
метод как это:
TinyDB tinydb = new TinyDB(this);
И затем используйте это так:
tinydb.putString("userName", "john");
String currentUser = tinydb.getString("userName");
Надеюсь, поможет.