Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.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 Studio运行时错误(按钮)_Java_Android_Onclick - Fatal编程技术网

Java Android Studio运行时错误(按钮)

Java Android Studio运行时错误(按钮),java,android,onclick,Java,Android,Onclick,如果你能帮我解决这个问题,我将非常非常感激 我正在用Udacity上的android基础知识学习android开发。 我正在进行用户输入:第8课。 到目前为止,这些应用程序一直下载到我的手机上,但现在当我按下其中唯一的按钮时,应用程序(JustJava)崩溃了。Android Studio上没有显示严重(红色)错误 我已经查看了logcat,但除了按钮(onClick)是问题所在之外,我无法理解它。我不知道如何修理它 这在logcat中每隔几秒钟就会显示为红色:E/TZ_CCM_服务器:仅支持“

如果你能帮我解决这个问题,我将非常非常感激

我正在用Udacity上的android基础知识学习android开发。 我正在进行用户输入:第8课。 到目前为止,这些应用程序一直下载到我的手机上,但现在当我按下其中唯一的按钮时,应用程序(JustJava)崩溃了。Android Studio上没有显示严重(红色)错误

我已经查看了logcat,但除了按钮(onClick)是问题所在之外,我无法理解它。我不知道如何修理它

这在logcat中每隔几秒钟就会显示为红色:E/TZ_CCM_服务器:仅支持“CCM”

以下是与我的运行时崩溃相关的完整错误日志:

07-09 10:51:17.638 18253-18253/com.example.android.justjava E/AndroidRuntime:FATAL EXCEPTION:main 进程:com.example.android.justjava,PID:18253 java.lang.IllegalStateException:无法为android执行方法:onClick 在android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:389) 在android.view.view.performClick上(view.java:5697) 在android.widget.TextView.performClick上(TextView.java:10826) 在android.view.view$PerformClick.run(view.java:22526) 位于android.os.Handler.handleCallback(Handler.java:739) 位于android.os.Handler.dispatchMessage(Handler.java:95) 位于android.os.Looper.loop(Looper.java:158) 位于android.app.ActivityThread.main(ActivityThread.java:7224) 位于java.lang.reflect.Method.invoke(本机方法) 在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run上(ZygoteInit.java:1230) 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 原因:java.lang.reflect.InvocationTargetException 位于java.lang.reflect.Method.invoke(本机方法) 在android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:384) 在android.view.view.performClick上(view.java:5697) 在android.widget.TextView.performClick上(TextView.java:10826) 在android.view.view$PerformClick.run(view.java:22526) 位于android.os.Handler.handleCallback(Handler.java:739) 位于android.os.Handler.dispatchMessage(Handler.java:95) 位于android.os.Looper.loop(Looper.java:158) 位于android.app.ActivityThread.main(ActivityThread.java:7224) 位于java.lang.reflect.Method.invoke(本机方法) 在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run上(ZygoteInit.java:1230) 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 原因:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void android.widget.TextView.setText(java.lang.CharSequence)” 位于com.example.android.justjava.MainActivity.displayPrice(MainActivity.java:45) 位于com.example.android.justjava.MainActivity.submitor(MainActivity.java:28) 位于java.lang.reflect.Method.invoke(本机方法) 在android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:384) 在android.view.view.performClick上(view.java:5697) 在android.widget.TextView.performClick上(TextView.java:10826) 在android.view.view$PerformClick.run(view.java:22526) 位于android.os.Handler.handleCallback(Handler.java:739) 位于android.os.Handler.dispatchMessage(Handler.java:95) 位于android.os.Looper.loop(Looper.java:158) 位于android.app.ActivityThread.main(ActivityThread.java:7224) 位于java.lang.reflect.Method.invoke(本机方法) 在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run上(ZygoteInit.java:1230) 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

编辑: MainActivity/java代码:

    package com.example.android.justjava;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;
import java.text.NumberFormat;

/**
 * This app displays an order form to order coffee.
 */
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }



    /**
     * This method is called when the order button is clicked.
     */
    public void submitOrder(View view) {
        int coffeeNumber = 3;
        display(coffeeNumber);
        displayPrice(coffeeNumber * 5);
    }


    /**
     * This method displays the given quantity value on the screen.
     */
    private void display(int number) {
        TextView quantityTextView = (TextView) findViewById(R.id.quantity_text_view);
        quantityTextView.setText("" + number);
    }

    /**
     * This method displays the given price on the screen.
     */
    private void displayPrice(int number) {
        TextView priceTextView = (TextView) findViewById(R.id.price_text_view);
        priceTextView.setText(NumberFormat.getCurrencyInstance().format(number));
    }


}
XML代码:

<?xml version="1.0" encoding="utf-8"?>

<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:paddingBottom="16dp"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingTop="16dp"
    android:orientation="vertical"
tools:context=".MainActivity">

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Quantity"
    android:fontFamily="sans-serif-light"
    android:textColor="@android:color/black"
    android:padding="10dp"
    android:textAllCaps="true"
    android:layout_marginBottom="16dp"/>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="0"
    android:textSize="16sp"
    android:fontFamily="sans-serif-light"
    android:textColor="@android:color/black"
    android:padding="10dp"
    android:id="@+id/quantity_text_view"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Price"
        android:fontFamily="sans-serif-light"
        android:textColor="@android:color/black"
        android:padding="10dp"
        android:textAllCaps="true"
        android:layout_marginBottom="16dp"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="€0"
        android:textSize="16sp"
        android:fontFamily="sans-serif-light"
        android:textColor="@android:color/black"
        android:padding="10dp"
        android:layout="@+id/price_text_view"
        />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:text="Order"
        android:onClick="submitOrder"
        />


</LinearLayout>

我刚刚在global中调用了
TextView
,然后在
onCreate
中初始化,然后在我们需要的任何地方使用

只需替换这个已编辑的java类

public class MainActivity extends AppCompatActivity {
         TextView priceTextView, quantityTextView ;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    quantityTextView = (TextView) findViewById(R.id.quantity_text_view);
    priceTextView = (TextView) findViewById(R.id.price_text_view);
    }



    /**
     * This method is called when the order button is clicked.
     */
    public void submitOrder(View view) {
        int coffeeNumber = 3;
        display(coffeeNumber);
        displayPrice(coffeeNumber * 5);
    }


    /**
     * This method displays the given quantity value on the screen.
     */
    private void display(int number) {
        quantityTextView.setText("" + number);
    }

    /**
     * This method displays the given price on the screen.
     */
    private void displayPrice(int number) {

        priceTextView.setText(NumberFormat.getCurrencyInstance().format(number));
    }


}

检查此布局中的activity_main.xml您没有id为price_text_的TextView。只需使用该id定义一个TextView,您的应用程序就不会再崩溃,您可以进入下一章;)



我想你只是犯了个愚蠢的错误。我看到您使用的是布局而不是id^^

如下更改您的xml

<?xml version="1.0" encoding="utf-8"?>
<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:paddingBottom="16dp"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingTop="16dp"
android:orientation="vertical"
tools:context=".MainActivity">

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Quantity"
    android:fontFamily="sans-serif-light"
    android:textColor="@android:color/black"
    android:padding="10dp"
    android:textAllCaps="true"
    android:layout_marginBottom="16dp"/>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="0"
    android:textSize="16sp"
    android:fontFamily="sans-serif-light"
    android:textColor="@android:color/black"
    android:padding="10dp"
    android:id="@+id/quantity_text_view"/>

<TextView
    android:id="@+id/price_text_view"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Price"
    android:fontFamily="sans-serif-light"
    android:textColor="@android:color/black"
    android:padding="10dp"
    android:textAllCaps="true"
    android:layout_marginBottom="16dp"/>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="€0"
    android:textSize="16sp"
    android:fontFamily="sans-serif-light"
    android:textColor="@android:color/black"
    android:padding="10dp"
    android:layout="@+id/price_text_view"
    />

<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="16dp"
    android:text="Order"
    android:onClick="submitOrder"
    />


OMG,请不要使用XMLMAINActivity.java中的onClick和activity\u main.xml代码。谢谢。我现在已经把它们都加上了。谢谢TomasHi vijikrish,这里有两个setText值。我将它们粘贴在这里(我还编辑了我的问题,以包含完整的java和XML代码):quantityTextView.setText(“+number”)和priceTextView.setText(NumberFormat.getCurrencyInstance().format(number))问题是您应该在
onCreate
方法之外声明
TextView
,并在
onCreate
方法中初始化。然后你可以在任何地方
setText
。谢谢vijikrish,我是初学者,所以我不得不问一个愚蠢的问题,对不起!我看到上面的代码,您建议我添加到java中。我是在末尾添加它,还是先删除其他内容?如果是,我应该删除什么?谢谢非常感谢你的帮助。不幸的是,它仍然不起作用(使用上面编辑的代码建议)。我仍然在logcat中看到同样的错误。从早些时候开始,我在应用程序中又添加了两个按钮。他们都很好。我已经反复检查了第一个按钮的代码,似乎没有任何问题。我没有主意了(无论如何,非常感谢您抽出时间给我提建议。
<?xml version="1.0" encoding="utf-8"?>
<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:paddingBottom="16dp"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingTop="16dp"
android:orientation="vertical"
tools:context=".MainActivity">

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Quantity"
    android:fontFamily="sans-serif-light"
    android:textColor="@android:color/black"
    android:padding="10dp"
    android:textAllCaps="true"
    android:layout_marginBottom="16dp"/>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="0"
    android:textSize="16sp"
    android:fontFamily="sans-serif-light"
    android:textColor="@android:color/black"
    android:padding="10dp"
    android:id="@+id/quantity_text_view"/>

<TextView
    android:id="@+id/price_text_view"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Price"
    android:fontFamily="sans-serif-light"
    android:textColor="@android:color/black"
    android:padding="10dp"
    android:textAllCaps="true"
    android:layout_marginBottom="16dp"/>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="€0"
    android:textSize="16sp"
    android:fontFamily="sans-serif-light"
    android:textColor="@android:color/black"
    android:padding="10dp"
    android:layout="@+id/price_text_view"
    />

<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="16dp"
    android:text="Order"
    android:onClick="submitOrder"
    />