2017-04-17 62 views
1

如何使用共享首选项创建多会话,以便两个用户可以在同一会话中登录和注销?使用SharedPreferences登录很多用户

我有以下代码。

public class Session 
{ 
    SharedPreferences prefs; 
    SharedPreferences.Editor editor; 
    Context ctx; 
    String [][] usuarios; 
    int i,j; 

    public Session(Context ctx) 
    { 
     this.ctx = ctx; 
     prefs = ctx.getSharedPreferences("init", Context.MODE_PRIVATE); 
     editor = prefs.edit(); 
    } 

    public void setLoggedIn(boolean loggedin) 
    { 
     editor.putBoolean("loggedinmode",loggedin); 
     editor.commit(); 
    } 

    public boolean loggedin() 
    { 
     return prefs.getBoolean("loggedinmode",false); 
    } 
} 

我正在使用Android Studio。

+0

两个用户最大?或者任何数字?此外,SharedPreferences不是存储列表的好方法,更好的解决方案是使用JSON或纯文本文件。 –

回答

0

你可以存储列表,你只需要使用一个聪明的方式。有一个名为Gson的库,它可以序列化和反序列化Java对象。所以你可以做的是创建一个对象列表,调用Gson.toJson,它将对象转换成该对象的json字符串表示形式,然后将其作为字符串以共享的优先级与您的唯一名称一起存储。然后修改读取的对象,使用从杰森,做你的事情,并保存。提示,这个操作虽然可行,但是从长远来看可以使用数据库,领域很棒。

+0

Gson是一个Java库,可用于将Java对象转换为其JSON表示。它也可以用来将JSON字符串转换为等效的Java对象。 Gson可以使用任意Java对象。 – Remario

0

为什么只是不使用SQLite? Sharedpreferences也可以,但共享首选旨在保存简单的值。

如果使用的是SharedPreferences,只是区分键名前: “User1_session_login”, “User2_session_login”

public void setLoggedIn(String key,boolean loggedin){ 
      editor.putBoolean(key,loggedin); 
      editor.commit(); 
}