按下按钮时应用程序崩溃

时间:2017-01-15 12:45:40

标签: java android nullpointerexception

大家好,我是新来的,所以这是我的第一篇文章

我想构建我的第一个Android应用程序,这将是一个精确的GPA计算器,但每次我按下计算按钮应用程序崩溃我使用Android工作室,这里是Java代码

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/content_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="com.example.mac.gpacalculator.MainActivity"
tools:showIn="@layout/activity_main">

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ems="10"
    android:id="@+id/num4"
    android:layout_below="@+id/num3"
    android:layout_alignStart="@+id/num3"
    android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+-"
    android:textAlignment="center"
    android:hint="Grade"
    android:inputType="text" />

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ems="10"
    android:id="@+id/num5"
    android:layout_below="@+id/num4"
    android:layout_alignStart="@+id/num4"
    android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+-"
    android:textAlignment="center"
    android:hint="Grade"
    android:inputType="text" />

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ems="10"
    android:id="@+id/num2"
    android:layout_below="@+id/num1"
    android:layout_alignStart="@+id/num1"
    android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+-"
    android:textAlignment="center"
    android:hint="Grade"
    android:inputType="text" />

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ems="10"
    android:id="@+id/num3"
    android:inputType="text"
    android:textAlignment="center"
    android:hint="Grade"
    android:layout_below="@+id/num2"
    android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+-"
    android:layout_alignStart="@+id/num2" />

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ems="10"
    android:id="@+id/num1"
    android:hint="Grade"
    android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+-"
    android:textAlignment="center"
    android:layout_marginTop="49dp"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:inputType="text" />

<Button
    android:text="CALCULATE"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/calc"
    android:layout_marginTop="24dp"
    android:layout_below="@+id/num5"
    android:layout_centerHorizontal="true"
    android:onClick="calculation"/>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="50dp"
    android:id="@+id/total"
    android:hint="0"
    android:layout_below="@+id/calc"
    android:layout_centerHorizontal="true"
    android:textSize="50sp" />

</RelativeLayout>

这是XML

FATAL EXCEPTION: main
              Process: com.example.mac.gpacalculator, PID: 2327
              java.lang.NumberFormatException: empty String
                  at java.lang.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1071)
                  at java.lang.Float.parseFloat(Float.java:459)
                  at com.example.mac.gpacalculator.MainActivity$2.onClick(MainActivity.java:51)
                  at android.view.View.performClick(View.java:5637)
                  at android.view.View$PerformClick.run(View.java:22429)
                  at android.os.Handler.handleCallback(Handler.java:751)
                  at android.os.Handler.dispatchMessage(Handler.java:95)
                  at android.os.Looper.loop(Looper.java:154)
                  at android.app.ActivityThread.main(ActivityThread.java:6119)
                  at java.lang.reflect.Method.invoke(Native Method)
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
Application terminated.

另外,我在哪里可以了解更多有关Android开发的内容,您可以向我推荐一些资源,如书籍,网站等,我非常感激。 提前致谢。

哦抱歉,我没有包含错误消息

.save()

3 个答案:

答案 0 :(得分:0)

你必须Button btn = (Button) findViewById(R.id.button);,否则你会抛出NullPointerException。检查android监视器,看看是否与那里的错误匹配。

答案 1 :(得分:0)

您已在XML android:onClick="calculation"标记中添加了<Button>,因此请定义一个名为calculate的方法,该方法接受代码中的视图。

或在代码中使用calcbtn.setOnClickListener ...并从按钮标记中删除android:onClick="calculation"

不要同时使用android:onClick="calculationview.setOnClick ..来查看相同的视图。

您的XML中没有名为fab的ID,因此请添加FloatingActionButton并将该ID提供给它或发表评论FloatingActionButton fab ....});

答案 2 :(得分:0)

我在这里看到多个错误:

  • 正如@charuka所回答的那样,您在按钮android:onClick="calculation中添加了一个方法,该方法无法被Android找到并导致崩溃。

  • 您正尝试将EditText解析为String,而不是String,此处为:convert(String.valueOf(grade1));,将其更改为convert(grade1.getText().toString());