我已经创建了一个应用程序,你可以登录使用SQLite,并检查匹配用户数据库。- 空对象引用
我有登录工作,我知道了一个布尔变量设置为true,一旦用户登录,但我试图找出如何从传回MainActivity.java Login.java在的onResume()方法。
下面是从代码Login.java,我设置会话为true,然后我用putExtra发回MainActivity。
public void onClick(View v) {
String username = usernameET.getText().toString();
String password = passwordET.getText().toString();
boolean success = db.Login(username, password);
if(success)
{
Log.d("login", "user logged");
session = true;
Intent i = new Intent(Login.this, MainActivity.class);
i.putExtra("loginSuccess", session);
i.putExtra("sessionName", username);
startActivity(i);
}
else
{
Log.d("login", "user not logged");
}
}
这里是从MainActivity.java在的onResume()方法的代码。 if语句是错误所在,我只是想知道我怎样才能让我的应用程序识别布尔,所以它知道返回主页面时,在用户登录,并存储用户的名字,这样我可以再负担这取决于谁的用户信息登录。
protected void onResume() {
super.onRestart();
Log.d("On Restart", "ON RESTART CALLED");
boolean sessionBool = false;
if (sessionBool = getIntent().getExtras().getBoolean("loginSuccess"))
{
sessionBool = true;
String sessionNamestring = getIntent().getStringExtra("sessionName");
Log.d("Session Name", sessionNamestring);
}
else
{
sessionBool = false;
}
logcat的
02-21 00:54:29.174: E/AndroidRuntime(2563): FATAL EXCEPTION: main
02-21 00:54:29.174: E/AndroidRuntime(2563): Process: com.example.project, PID: 2563
02-21 00:54:29.174: E/AndroidRuntime(2563): java.lang.RuntimeException: Unable to resume activity {com.example.project/com.example.project.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.os.Bundle.getBoolean(java.lang.String)' on a null object reference
02-21 00:54:29.174: E/AndroidRuntime(2563): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2989)
02-21 00:54:29.174: E/AndroidRuntime(2563): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3020)
02-21 00:54:29.174: E/AndroidRuntime(2563): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2395)
02-21 00:54:29.174: E/AndroidRuntime(2563): at android.app.ActivityThread.access$800(ActivityThread.java:151)
02-21 00:54:29.174: E/AndroidRuntime(2563): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
02-21 00:54:29.174: E/AndroidRuntime(2563): at android.os.Handler.dispatchMessage(Handler.java:102)
02-21 00:54:29.174: E/AndroidRuntime(2563): at android.os.Looper.loop(Looper.java:135)
02-21 00:54:29.174: E/AndroidRuntime(2563): at android.app.ActivityThread.main(ActivityThread.java:5257)
02-21 00:54:29.174: E/AndroidRuntime(2563): at java.lang.reflect.Method.invoke(Native Method)
02-21 00:54:29.174: E/AndroidRuntime(2563): at java.lang.reflect.Method.invoke(Method.java:372)
02-21 00:54:29.174: E/AndroidRuntime(2563): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
02-21 00:54:29.174: E/AndroidRuntime(2563): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
02-21 00:54:29.174: E/AndroidRuntime(2563): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.os.Bundle.getBoolean(java.lang.String)' on a null object reference
02-21 00:54:29.174: E/AndroidRuntime(2563): at com.example.project.MainActivity.onResume(MainActivity.java:64)
02-21 00:54:29.174: E/AndroidRuntime(2563): at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1257)
02-21 00:54:29.174: E/AndroidRuntime(2563): at android.app.Activity.performResume(Activity.java:6076)
三江源,这确实让很多更有意义。但是,当我使用getBooleanExtra它说:“方法getBooleanExtra(字符串,布尔)类型意图不适用于参数(字符串)” –
@MattMurphy这是我的不好。 'getBooleanExtra()'方法要求你传入你想要接收的默认值,以防未额外设置。请看我更新的答案。 –