Android 带有onclick函数的IllegalStateException
我已经创建了一个Android 带有onclick函数的IllegalStateException,android,Android,我已经创建了一个OnbuttonClick函数,并在双按钮计算器和重置上实现它。 在单击reset时重置其值,但在单击calculate时会生成一个非法状态异常。 我已经在这个论坛上讨论了这个问题,但没有找到解决办法 package com.example.rajafarid.hc; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.Ed
OnbuttonClick
函数,并在双按钮计算器和重置上实现它。
在单击reset时重置其值,但在单击calculate时会生成一个非法状态异常。
我已经在这个论坛上讨论了这个问题,但没有找到解决办法
package com.example.rajafarid.hc;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class FoodStorage extends MainActivity {
public int sum = 1;
public int result;
public int wheatlb = 25;
public int wheatkg = 10;
public int beanlb = 5;
public int beankg = 2;
EditText editTextNOP;
EditText editTextNOMS;
EditText editTextWheat;
EditText editTextBeans;
Button btnCalculate;
Button btnReset;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_food_storage);
editTextNOP = (EditText) findViewById(R.id.editTextNOP);
editTextNOMS = (EditText) findViewById(R.id.editTextNOMS);
btnCalculate = (Button) findViewById(R.id.btnCalculate);
btnReset = (Button) findViewById(R.id.btnReset);
}
这是按钮单击的功能
public void OnButtonClick(View v)
{
if (v.getId() == R.id.btnCalculate)
{
result = sum*wheatlb;
int result1 = sum*wheatkg;
editTextWheat.setText(result+"lb or" +wheatkg+"kg");
int bean = sum*beanlb;
int bean1=sum*beankg;
editTextBeans.setText(bean+"lb or"+beankg+"kg");
}
else if (v.getId()==R.id.btnReset)
{
editTextNOP.setText("");
editTextNOMS.setText("");
}
}
}
日志文件:
java.lang.IllegalStateException:无法在android.view.view$1.onClick(view.java:4222)在android.view.view.performClick(view.java:5156)在android.view.view$performClick.run(view.java:20755)在android.os.Handler.HandlerCallback(Handler.java:739)在android.os.Handler.dispatchMessage(Handler.java:95)上执行活动的方法android.app.ActivityThread.main(ActivityThread.java:5832)的android.os.Looper.loop(Looper.java:145)和java.lang.reflect.Method.invoke(Method.java:372)的com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(zgoteinit.java:1399)和com.android.internal.os.zgoteinit.java:1194
原因:java.lang.reflect.InvocationTargetException
位于java.lang.reflect.Method.invoke(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:372)
在android.view.view$1.onClick上(view.java:4217)
在android.view.view.performClick上(view.java:5156)
在android.view.view$PerformClick.run(view.java:20755)
位于android.os.Handler.handleCallback(Handler.java:739)
位于android.os.Handler.dispatchMessage(Handler.java:95)
位于android.os.Looper.loop(Looper.java:145)
位于android.app.ActivityThread.main(ActivityThread.java:5832)
位于java.lang.reflect.Method.invoke(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:372)
在
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
原因:java.lang.NullPointerException:尝试调用虚拟机
方法'void android.widget.EditText.setText(java.lang.CharSequence)'
关于空对象引用
在
com.example.rajafandra.hc.FoodStorage.OnButtonClick(FoodStorage.java:42)
位于java.lang.reflect.Method.invoke(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:372)
在android.view.view$1.onClick上(view.java:4217)
在android.view.view.performClick上(view.java:5156)
在android.view.view$PerformClick.run(view.java:20755)
位于android.os.Handler.handleCallback(Handler.java:739)
位于android.os.Handler.dispatchMessage(Handler.java:95)
位于android.os.Looper.loop(Looper.java:145)
位于android.app.ActivityThread.main(ActivityThread.java:5832)
位于java.lang.reflect.Method.invoke(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:372)
在
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
应用程序因NullPointerException而崩溃。问题是您没有初始化
editTextBeans
和editTextBeans
。您正试图对空引用调用setText方法。因此,正如您对其他两个TextView所做的那样,在onCreate()中初始化这些TextView
这将解决应用程序因NullPointerException而崩溃的问题。问题是您没有初始化
editTextBeans
和editTextBeans
。您正试图对空引用调用setText方法。因此,正如您对其他两个TextView所做的那样,在onCreate()中初始化这些TextView
这将解决editTextBeans和editTextBeans的Null问题,因为当您对它们使用setText()时,它们保持Null 使用findViewById()方法分配editTextBeans和editTextBeans
editTextBeans&editTextBeans的Null,因为当您对其使用setText()时,它们的值为Null<
@Override
protected void onCreate(Bundle b){
editTextWheat = (EditText) findViewById(R.id.id_of_edit_text_wheat);
editTextBeans = (EditText) findViewById(R.id.id_of_edit_text_beans);
........
}
editTextWheat = (EditText) findViewById(R.id.your editTextWheat view ID );
editTextBeans = (EditText) findViewById(R.id.your editTextBeans view ID );