共享首选项登录 activity
shared preference login activity
我正在尝试在一个屏幕中保存用户登录凭据 (login.java) 并尝试在用户登录时获取该凭据,并尝试在另一个屏幕上获取它 activity (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,而不是用户凭据
当您调用 SharedPreferences 时,您有两个不同的名称,请检查字符串并可能使用全局变量,这样您的输入就不会失败:)
MYPref - Mypref
无论如何,如果您需要在整个应用程序中使用它们,您可以创建一个 class(.java 文件)并使用静态值,例如:
public class LoggedUser{
public static String email;
public static String password;
//getters and setters
}
如果您在用户登录时为它们赋值,您将在整个应用程序中填充它们,而无需每次调用 sharedPrefs
一个简单而优雅的解决方案是在 android 中使用一个非常简单的库 TinyDB,它只是对共享首选项的抽象。
您可以在 activity 的 onCreate()
方法中初始化它,如下所示:
TinyDB tinydb = new TinyDB(this);
然后像这样使用它:
tinydb.putString("userName", "john");
String currentUser = tinydb.getString("userName");
希望对您有所帮助。
您应该记住您提供的名称,因为这是区分大小写的。
MYPref - Mypref
我正在尝试在一个屏幕中保存用户登录凭据 (login.java) 并尝试在用户登录时获取该凭据,并尝试在另一个屏幕上获取它 activity (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,而不是用户凭据
当您调用 SharedPreferences 时,您有两个不同的名称,请检查字符串并可能使用全局变量,这样您的输入就不会失败:)
MYPref - Mypref
无论如何,如果您需要在整个应用程序中使用它们,您可以创建一个 class(.java 文件)并使用静态值,例如:
public class LoggedUser{
public static String email;
public static String password;
//getters and setters
}
如果您在用户登录时为它们赋值,您将在整个应用程序中填充它们,而无需每次调用 sharedPrefs
一个简单而优雅的解决方案是在 android 中使用一个非常简单的库 TinyDB,它只是对共享首选项的抽象。
您可以在 activity 的 onCreate()
方法中初始化它,如下所示:
TinyDB tinydb = new TinyDB(this);
然后像这样使用它:
tinydb.putString("userName", "john");
String currentUser = tinydb.getString("userName");
希望对您有所帮助。
您应该记住您提供的名称,因为这是区分大小写的。
MYPref - Mypref