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 );