【问题标题】:App crashes when I try to go to Next Activity Page in App当我尝试进入应用程序中的下一个活动页面时应用程序崩溃
【发布时间】:2017-01-03 17:14:36
【问题描述】:

我正在制作一个非常基本的 6-7 活动应用程序,试图让它变得非常简单。我已成功添加了 4 个其他实例,在这些实例中,您在应用程序底部按“NEXT”,它会将您带到应用程序中的下一个活动。但是,我被卡住了,无法弄清楚如何继续。我已经尝试调试,但无法弄清楚错误消息的含义。谢谢你的帮助。

来自 Logcat 的错误信息:

java.lang.IllegalStateException: Could not execute method for android:onClick
                                                                                 at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293)
                                                                                 at android.view.View.performClick(View.java:4785)
                                                                                 at android.view.View$PerformClick.run(View.java:19884)
                                                                                 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:5343)
                                                                                 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:905)
                                                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700)
                                                                              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:288)
                                                                                 at android.view.View.performClick(View.java:4785) 
                                                                                 at android.view.View$PerformClick.run(View.java:19884) 
                                                                                 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:5343) 
                                                                                 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:905) 
                                                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700) 
                                                                              Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.CharSequence android.widget.TextView.getText()' on a null object reference
                                                                                 at com.example.android.budgeit10.expenses.fourthNext(expenses.java:86)
                                                                                 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:288) 
                                                                                 at android.view.View.performClick(View.java:4785) 
                                                                                 at android.view.View$PerformClick.run(View.java:19884) 
                                                                                 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:5343) 
                                                                                 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:905) 
                                                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700)

 

JAVA:

        package com.example.android.budgeit10;

    import android.content.Intent;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.text.TextUtils;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;

    public class expenses extends AppCompatActivity {

        AppCompatActivity appCompatActivity;
        EditText housingExpense;
        EditText foodExpense;
        EditText transportExpense;
        EditText otherExpense;
        Button expensesButton;
        TextView addExpenses;
        EditText income;

        double housing, food, transport, other, sum;


        @Override
        public void onCreate(Bundle savedInstanceState) {

            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_expenses);
            housingExpense = (EditText) findViewById(R.id.housingExpense);
            foodExpense = (EditText) findViewById(R.id.foodExpense);
            transportExpense = (EditText) findViewById(R.id.transportExpense);
            otherExpense = (EditText) findViewById(R.id.otherExpense);
            expensesButton = (Button) findViewById(R.id.expensesButton);
            addExpenses = (TextView) findViewById(R.id.totalMonthlyExpenses);
            income = (EditText) findViewById(R.id.monthlyIncome);


            expensesButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    housing = Double.parseDouble(housingExpense.getText().toString());
                    try {
                        Double.parseDouble(housingExpense.getText().toString());
                    } catch (NumberFormatException nfe) {
                    }
                    food = Double.parseDouble(foodExpense.getText().toString());
                    transport = Double.parseDouble(transportExpense.getText().toString());
                    other = Double.parseDouble(otherExpense.getText().toString());
                    sum = housing + food + transport + other;
                    addExpenses.setText(Double.toString(sum));

                }
            });

            expensesButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {


                    if (TextUtils.isEmpty(housingExpense.getText().toString()) ||
                            TextUtils.isEmpty(foodExpense.getText().toString()) ||
                            TextUtils.isEmpty(otherExpense.getText().toString()) ||
                            TextUtils.isEmpty(transportExpense.getText().toString())) {

                        addExpenses.setText("Please fill all fields."); // if any of the fields is empty, add nothing to textview

                    } else {
                        Double housing = Double.parseDouble(housingExpense.getText().toString());
                        Double food = Double.parseDouble(foodExpense.getText().toString());
                        Double transport = Double.parseDouble(transportExpense.getText().toString());
                        Double other = Double.parseDouble(otherExpense.getText().toString());
                        Double sum = housing + food + transport + other;
                        addExpenses.setText(Double.toString(sum));
                    }
                }
            });
        }
        public void fourthNext(View view) {
            Intent intent = new Intent(this, Goals.class);
            TextView textView = (TextView) findViewById(R.id.totalMonthlyIncome);

            String income = textView.getText().toString();
            startActivity(intent);

        }

来自 Button 的 XML:

<LinearLayout 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:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.android.budgeit10.incomePage">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="MONTHLY EXPENSES"
        android:textSize="24dp" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/totalMonthlyIncome"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingBottom="16dp"
            android:paddingTop="16dp"
            android:text="Enter Monthly Income"
            android:textSize="22dp"
            android:textStyle="bold" />


        <EditText
            android:id="@+id/monthlyIncome"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/income_on_expenses"
            android:inputType="phone"
            android:paddingLeft="16dp"
            android:paddingRight="16dp"
            android:textSize="16dp" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="2dp"
        android:background="#2E7D32" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">


        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="8dp"
            android:text="HOUSING"
            android:textSize="22dp"
            android:textStyle="bold" />

        <EditText
            android:id="@+id/housingExpense"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:hint="@string/housing"
            android:inputType="phone"
            android:paddingLeft="16dp"
            android:paddingRight="16dp" />

    </LinearLayout>


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="8dp"
            android:paddingTop="16dp"
            android:text="FOOD"
            android:textSize="22dp"
            android:textStyle="bold" />

        <EditText
            android:id="@+id/foodExpense"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:hint="@string/food"
            android:inputType="phone"
            android:paddingLeft="16dp"
            android:paddingRight="16dp" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="8dp"
            android:paddingTop="16dp"
            android:text="TRANSPORTATION"
            android:textSize="22dp"
            android:textStyle="bold" />

        <EditText
            android:id="@+id/transportExpense"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:hint="@string/transport"
            android:inputType="phone"
            android:paddingLeft="16dp"
            android:paddingRight="16dp" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="8dp"
            android:paddingTop="16dp"
            android:text="EVERYTHING ELSE"
            android:textSize="22dp"
            android:textStyle="bold" />

        <EditText
            android:id="@+id/otherExpense"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:hint="@string/other"
            android:inputType="phone"
            android:paddingLeft="16dp"
            android:paddingRight="16dp" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="2dp"
        android:background="#2E7D32" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:paddingTop="16dp">

        <Button
            android:id="@+id/expensesButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="#C8E6C9"
            android:onClick="submitOrder"
            android:padding="16dp"
            android:text="TOTAL EXPENSES"
            android:textSize="16dp"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/totalMonthlyExpenses"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/monthly_expenses"
            android:inputType="phone"
            android:paddingLeft="16dp"
            android:paddingRight="16dp"
            android:textSize="16dp" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingTop="8dp"
            android:text="Extra $ : "
            android:textSize="24dp"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/extra_cash"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/extra_cash"
            android:inputType="phone"
            android:paddingLeft="16dp"
            android:paddingRight="16dp"
            android:textSize="16dp" />
    </LinearLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal">

        <Button
            android:id="@+id/fourthNext"
            android:layout_width="match_parent"
            android:layout_height="100dp"
            android:layout_alignParentBottom="true"
            android:background="#C8E6C9"
            android:onClick="fourthNext"
            android:text="NEXT"
            android:textSize="34dp">

        </Button>
    </RelativeLayout>


</LinearLayout>

清单:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.android.budgeit10">

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".PageTwo" />
    <activity android:name=".incomePage" />
    <activity android:name=".expenses" />
    <activity android:name=".Goals" />
</application>

【问题讨论】:

  • Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.CharSequence android.widget.TextView.getText()' on a null object reference 这意味着您的 TextView 以某种方式获得了 null 值,当您尝试对其调用 getText() 时,会弹出错误。
  • @A.Omar 感谢您的回复。你能指出我正确的方向来解决这个问题并尝试一一找出哪个不正确吗?

标签: java android error-handling logcat


【解决方案1】:

您的 XML 布局中应该有一个 ID 为“totalMonthlyIncome”的 TextView。 (根据 Java 代码)只要确保它存在就可以解决问题。

“原因:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'java.lang.CharSequence android.widget.TextView.getText()'

在 com.example.android.budgeit10.expenses.fourthNext(expenses.java:86)"

根据logcat错误在expenses.java - line 86

【讨论】:

  • 好的,我加了,还是不行。 :/ 它还说找不到明确的活动类(我确保它在那里)和“Caused by:java.lang.reflect.InvocationTargetException”
  • 您是否在 Manifest xml 文件中声明了您的活动?
  • @Naween 感谢您的帮助——我在这里添加了 XML 的其余部分以便更好地查看——第 86 行的文本用于 textview FOOD,它不附加到任何方法或任何东西。不知道为什么这会是个问题?
  • @A.Omar,是的,所以我不确定为什么会出现这种情况。我将编辑我的帖子以包含它。
  • @Naween,我在帖子中添加了 AndroidManifest。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-24
  • 2021-11-16
相关资源
最近更新 更多