共享首选项登录 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