-1

我试图将用户登录凭据保存在一个屏幕(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,而不是用户凭据

+2

MYPref和MYpref P和的Y getSharedPref拼写错误 –

+0

变 “MYPref” 到 “Myrpref” 变了,你needthe同名 – Fabich

+0

题外话>简单的拼写错误。 – Shark

回答

2

您应该记住您给出的名称,因为这是区分大小写的。

MYPref - Mypref

1

你有两个不同的名字,当你调用SharedPreferences,检查字符串,也许使用全局变量,所以你不能不输入: )

MYPref - Mypref

无论如何,如果你需要使用它们在你的应用程序,你可以创建一个类( java文件),并使用静态值,例如:

public class LoggedUser{ 
    public static String email; 
    public static String password; 

    //getters and setters 

} 

如果您为它们分配一个值时,你就会有用户登录他们充满各地的应用程序,而不调用每次sharedPrefs

0

一简单而优雅的解决方案是在android中使用一个非常简单的库TinyDB,这只不过是对共享首选项的抽象。

您可以初始化它在你活动的onCreate()方法是这样的:

TinyDB tinydb = new TinyDB(this); 

,然后用它是这样的:

tinydb.putString("userName", "john"); 
String currentUser = tinydb.getString("userName"); 

希望它能帮助。