自定义会话保存

时间:2014-03-12 01:00:27

标签: android session exception sharedpreferences runtimeexception

再次使用stackoverflow,

我想存储会话,但是我有问题,我跳错了 我上课了#34; Session"另一个名为" MainActivity"

的课程

在我的课程中,我有:

public void saveSession(Context ctx,String username, String password){
    sharedpreferences = PreferenceManager.getDefaultSharedPreferences(ctx);
    Editor editor = sharedpreferences.edit();
    String u = username;
    String p = password;
    editor.putString(name, u);
    editor.putString(pass, p);
    editor.commit();
}

在我的主要有:

session.saveSession(getApplicationContext(), username.getText().toString(),password.getText().toString());

我收到此错误:

03-12 01:47:01.648: E/AndroidRuntime(3395): FATAL EXCEPTION: main
03-12 01:47:01.648: E/AndroidRuntime(3395): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.xx/com.example.xx.UserList}: java.lang.NullPointerException
03-12 01:47:01.648: E/AndroidRuntime(3395):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)

更新:onCreate()方法

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); 
setContentView(R.layout.user_list); 
//loadSesion(); session.loadSession(getApplicationContext());
usernameSession = session.getUsernameSession(); 
passwordSession = session.getPasswordSession(); 
inicializeBdSqlite();
inicialize(); 
user_list.setOnItemClickListener(this); 
} 

1 个答案:

答案 0 :(得分:1)

首先,关于SharedPreferences以及您使用它的方式。我有一些笔记:

1)确保字符串namepass是最终字符串,并且已经在此方法所在的类中初始化,因为如果sharedPreference个键中的任何一个{{1}整个文件可能会破坏如下:

null

2)无需将新值放入新字符串中,直接传递

final string name = "name";
final string pass = "password";

3)按照以下方式制作public void saveSession(Context ctx,String username, String password){ SharedPreference sharedpreferences = PreferenceManager.getDefaultSharedPreferences(ctx); Editor editor = sharedpreferences.edit(); editor.putString(name, username); editor.putString(pass, password); editor.commit(); } 方法:

getter

4)关于public String getUserName(Context ctx){ SharedPreference sharedpreferences = PreferenceManager.getDefaultSharedPreferences(ctx); return sharedpreferences.getString(name, "");//"" is the default value } user_list。确保您的主要活动user_list.setOnItemClickListener(this);implements如下:

OnClickListener

并在public class MainActivity extends Activity implements OnClickListener { 覆盖如下:

MainActivity

我希望它有所帮助