Java语言非法状态异常
我是android新手。我试图进行简单的登录活动,但当我点击登录按钮时,我遇到了运行时错误。我想我没有正确地获取数据。我已经检查过了,在SQLite中有一个数据对应于那个PK logcatJava语言非法状态异常,java,android,xml,Java,Android,Xml,我是android新手。我试图进行简单的登录活动,但当我点击登录按钮时,我遇到了运行时错误。我想我没有正确地获取数据。我已经检查过了,在SQLite中有一个数据对应于那个PK logcat FATAL EXCEPTION: main Process: com.example.champ.remindme, PID: 4043 java.lang.Il
FATAL EXCEPTION: main
Process: com.example.champ.remindme, PID: 4043
java.lang.IllegalStateException: Could not execute method for android:onClick
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:289)
at android.view.View.performClick(View.java:4780)
at android.view.View$PerformClick.run(View.java:19866)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:284)
at android.view.View.performClick(View.java:4780)
at android.view.View$PerformClick.run(View.java:19866)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.database.Cursor android.database.sqlite.SQLiteDatabase.rawQuery(java.lang.String, java.lang.String[])' on a null object reference
at com.example.champ.remindme.Login.LogIn(Login.java:45)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:284)
at android.view.View.performClick(View.java:4780)
at android.view.View$PerformClick.run(View.java:19866)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
java代码。
包com.example.champ.emememptime;
导入android.app.AlertDialog;
导入android.content.Intent;
导入android.database.Cursor;
导入android.database.sqlite.SQLiteDatabase;
导入android.os.Bundle;
导入android.support.v7.app.AppActivity;
导入android.view.view;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.Toast;
公共类登录扩展了AppCompatActivity{
EditText-edtUsername,edtPass;
字符串用户名、密码;
int计数器=3;
按钮登录按钮;
sqlitedb数据库;
//文本视图TXT;
//专用最终整数间隔=3000;
/*private Runnable Runnable=新Runnable{
公开募捐{
LoginButton.setEnabledtrue;
}
}; */
@凌驾
受保护的void onCreateBundle savedInstanceState{
super.onCreatesavedInstanceState;
setContentViewR.layout.activity\u登录;
LoginButton=ButtonfindViewByIdR.id.LoginButton;
edtUsername=EditTextfindViewByIdR.id.edtitem;
//Username=edtUsername.getText.toString;
edtPass=EditTextfindViewByIdR.id.password;
}
公共无效登录视图v{
ifedtUsername.getText.toString.trim.length==0 | | edtPass.getText.toString.trim.length==0
{
showMessageError,请输入空文本框;
回来
}
游标c=db.rawQuerySELECT*来自用户名为“+edtUsername.getText+”的用户,null;
ifc.moveToFirst
{
Username=c.getString1;
密码=c.getString2;
如果edtUsername.getText.toString.equalsUsername&&edtPass.getText.toString.equalsPassword{
Toast.makeTextLogin.this,登录成功,Toast.LENGTH\u LONG.show;
意向意向=新意向此,Menu.class;
intent.putExtraUsername,Username;
星状体;
}
否则{
Toast.makeTextLogin.this,登录失败,Toast.LENGTH\u LONG.show;
反;;
}
//txtAttempts.setTextAttempts左:+计数器;
如果计数器==0{
LoginButton.setEnabledfalse;
//new Timer.scheduleTimerTask runnable,间隔;
}
}
其他的
{
showMessageError,用户名无效;
}
/*---------------------------------*/
}
公共无效注册视图v{
意向意向=新意向此,SignUp.class;
星状体;
}
public void showmessage字符串标题,字符串消息
{
AlertDialog.Builder=新建AlertDialog.Builder此;
builder.setCancelabletrue;
builder.settitletle;
builder.setMessagemessage;
建筑商秀;
}
}
XML代码。
您在使用db之前没有初始化它。将此添加到onCreate中
您在使用db之前没有初始化它。将此添加到onCreate中
无事可做。仅在XML文件的按钮属性中删除
android:onClick
在您的活动类型中:-
LoginButton.setOnClickListener(new OnClickListener(){
@Override
onClick(){
LogIn();
}
});
我也面临这个问题。是的,我知道你的过程也没有错。但事实是我不知道为什么这个过程对我不起作用。但当我以编程方式实现onClick方法时,它就像一个符咒。我希望你的代码也能正常工作
并添加onCreate方法
db = getWritableDatabase();
无事可做。仅在XML文件的按钮属性中删除
android:onClick
在您的活动类型中:-
LoginButton.setOnClickListener(new OnClickListener(){
@Override
onClick(){
LogIn();
}
});
我也面临这个问题。是的,我知道你的过程也没有错。但事实是我不知道为什么这个过程对我不起作用。但当我以编程方式实现onClick方法时,它就像一个符咒。我希望你的代码也能正常工作
并添加onCreate方法
db = getWritableDatabase();
看起来db是空的,你需要在使用它之前初始化这个变量。看起来db是空的,你需要在使用它之前初始化这个变量。这里肯定不是这种情况。这是NPE,因为db没有初始化。这里肯定不是这种情况。这是NPE,因为db未初始化。