我在我的应用程序上使用本地登录系统。为什么我的登录屏幕崩溃?
的一点是简单地搜索在给定的数据库的用户名,提取正确的数据库条目,然后比较密码(很简单,不是吗?)
但是,我得到一个强制关闭我的活动。下面你有我使用
代码DB功能:
public Cursor loginUser(String username) throws SQLException{
String[] columns = new String[] {KEY_ROW_ID_USER, KEY_USER_NAMES, KEY_USER_PASSWORDS, KEY_USER_ACCESS};
String whereClause = KEY_USER_ACCESS+"='" + username+ "'";
Cursor cursor = db.query(USERS_TABLE, columns, whereClause, null, null, null, null);
if(cursor != null){
cursor.moveToFirst();
}
return cursor;
}
正开始将对DBAdapter:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.loginscreen);
dbAdapter = new PirelliDBAdapter(this);
.......................................
该函数的呼唤:
loginButton.setOnClickListener(new OnClickListener(){
public void onClick(View view){
username = usernameInput.getText().toString();
password = passwordInput.getText().toString();
Cursor c = dbAdapter.loginUser(usernameInput.getText().toString());
}
});
最后的错误日志:
03-11 01:08:25.225: W/dalvikvm(1563): threadid=1: thread exiting with uncaught exception (group=0x40014760)
03-11 01:08:25.235: E/AndroidRuntime(1563): FATAL EXCEPTION: main
03-11 01:08:25.235: E/AndroidRuntime(1563): java.lang.NullPointerException
03-11 01:08:25.235: E/AndroidRuntime(1563): at pirelli.app.dbadapter.PirelliDBAdapter.loginUser(PirelliDBAdapter.java:391)
03-11 01:08:25.235: E/AndroidRuntime(1563): at pirelli.app.LoginScreen$8.onClick(LoginScreen.java:176)
03-11 01:08:25.235: E/AndroidRuntime(1563): at android.view.View.performClick(View.java:3110)
03-11 01:08:25.235: E/AndroidRuntime(1563): at android.view.View$PerformClick.run(View.java:11934)
03-11 01:08:25.235: E/AndroidRuntime(1563): at android.os.Handler.handleCallback(Handler.java:587)
03-11 01:08:25.235: E/AndroidRuntime(1563): at android.os.Handler.dispatchMessage(Handler.java:92)
03-11 01:08:25.235: E/AndroidRuntime(1563): at android.os.Looper.loop(Looper.java:132)
03-11 01:08:25.235: E/AndroidRuntime(1563): at android.app.ActivityThread.main(ActivityThread.java:4123)
03-11 01:08:25.235: E/AndroidRuntime(1563): at java.lang.reflect.Method.invokeNative(Native Method)
03-11 01:08:25.235: E/AndroidRuntime(1563): at java.lang.reflect.Method.invoke(Method.java:491)
03-11 01:08:25.235: E/AndroidRuntime(1563): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
03-11 01:08:25.235: E/AndroidRuntime(1563): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
03-11 01:08:25.235: E/AndroidRuntime(1563): at dalvik.system.NativeStart.main(Native Method)
对此的任何帮助将是伟大的。我真的很为难,不能看着办吧......
你能发布PirelliDBAdapter的更多代码,以及它在何处/如何初始化?看起来像db可能是空的? – antonyt 2012-03-10 23:43:05
似乎你的分贝是空的! – 2012-03-10 23:56:16
适配器类的长度超过1000行,并在许多其他活动中成功使用。我真的不明白如何可以为空。你的意思是表格本身是空的,只需插入几个用户即可解决问题。 (不在家,现在不能尝试) – Eugen 2012-03-11 01:21:08