Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 尝试调用虚拟方法';android.text.Editable android.widget.EditText.getText()';在空对象引用上(单击按钮时崩溃)_Java_Android - Fatal编程技术网

Java 尝试调用虚拟方法';android.text.Editable android.widget.EditText.getText()';在空对象引用上(单击按钮时崩溃)

Java 尝试调用虚拟方法';android.text.Editable android.widget.EditText.getText()';在空对象引用上(单击按钮时崩溃),java,android,Java,Android,您好,我是android studio的新手,我遇到了这个问题,我完全被卡住了,我对如何解决这个问题没有理想的想法该应用程序运行良好,只是当我点击convert按钮时它崩溃了,请帮助 我犯的错误 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object r

您好,我是android studio的新手,我遇到了这个问题,我完全被卡住了,我对如何解决这个问题没有理想的想法该应用程序运行良好,只是当我点击convert按钮时它崩溃了,请帮助

我犯的错误

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference
        at com.example.wxy.sg_cheapskate.MainActivity.onConvertButtonClicked(MainActivity.java:85)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at android.view.View$1.onClick(View.java:4002)
at android.view.View.performClick(View.java:4756)
at android.view.View$PerformClick.run(View.java:19749)
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:5221)
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:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
应用程序的Xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.example.wxy.sg_cheapskate.converterActivity">


<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="Currency Converter"
    android:id="@+id/CurrencyConverter"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="139dp"
    android:textSize="30dp"
    android:textStyle="bold"/>

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="numberDecimal"
    android:ems="10"
    android:id="@+id/NumberEditText"
    android:hint="Enter Value!"
    android:layout_below="@+id/CurrencyConverter"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:textSize="25dp"/>

<RadioGroup
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/NumberEditText"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:id="@+id/radioGroup"
    android:layout_marginTop="5dp">

    <RadioButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="USD TO SGD"
        android:id="@+id/Ustosg"
        android:checked="false"
        android:textSize="25dp"
        android:layout_marginTop="15dp"/>

    <RadioButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="RINGGIT TO SGD"
        android:id="@+id/Mytosg"
        android:checked="false"
        android:textSize="25dp"
        android:layout_marginTop="15dp"/>

    <RadioButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="YUAN TO SGD"
        android:id="@+id/prctosg"
        android:checked="false"
        android:textSize="25dp"
        android:layout_marginTop="15dp"/>

    <RadioButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="EURO TO SGD"
        android:id="@+id/eutosg"
        android:checked="false"
        android:textSize="25dp"
        android:layout_marginTop="15dp"/>

    <RadioButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="YEN TO SGD"
        android:id="@+id/japtosg"
        android:checked="false"
        android:textSize="25dp"
        android:layout_marginTop="15dp"/>
</RadioGroup>

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Convert"
    android:id="@+id/convertBtn"
    android:layout_below="@+id/radioGroup"
    android:layout_centerHorizontal="true"
    android:onClick="onConvertButtonClicked"
    android:textStyle="bold"
    android:textSize="25dp"
    android:layout_marginTop="10dp"/>

首先关注李的评论

其次,将
String
转换为
double
,如下所示:

double value = Double.parseDouble("Double string here");

Shubham想说的是将变量
Number
重命名为其他变量,比如
num
,然后将
Number
的每次出现都更改为
num
。原因是,Number是一个java类,不能用作变量名

num= (EditText) findViewById(R.id.NumberEditText);
...
double value = Double.parseDouble(num.getText());
...
num.setText(String.valueOf(value));

如果您使用的对象未初始化,则会以独占方式引发该异常。检查是否已正确初始化Number对象。您可以通过执行以下操作来检查数字是否已初始化:

if(Number!=null){
        //stuff here
    } 

Number
是Java中的一个类,不应将其用作变量名。hmmmm我更改了变量名,但仍然崩溃了D:错误是在java double value=new double(Number.getText().toString())下处理这一行;你所说的“这里的双字符串”是什么意思;我不太明白所以我的情况是Double value=Double.parseDouble(input.getText().toString())??确切地不过,您应该首先检查
input.getText().toString()
是否为null或空,这样您就不会得到
NPE
。err如何检查input.getText().toString()是否为null或空??对于这个问题,我对Android完全陌生。我将变量编号改为input aready,但应用程序仍然崩溃。我点击了按钮,这里是编辑过的java代码。整个文件是什么?我看不出您将侦听器分配给按钮的位置。这是整个java代码。请看一看您从未调用过方法“onConvertButtonClicked()”,因此在调用该方法之前,您不能期望该部分代码运行。我应该将其放在何处?onclick?在调用setText()方法之前,把它放在任何地方,它只是用来检查数字是否为null。(我想是的)你说的n是什么意思?应用程序仍然崩溃,这正是我所怀疑的。这意味着数字没有初始化。再次检查您的代码,以确保正确初始化了数字
if(Number!=null){
        //stuff here
    }