Java Android sdk设置文本错误

Java Android sdk设置文本错误,java,android,nullpointerexception,Java,Android,Nullpointerexception,我试图找出这段代码不起作用的原因 最后一行是给我一个警告 “不要集中显示设置文本的文本” 任何帮助都将不胜感激 public class RegistrationActivity extends AppCompatActivity { double costPerAthlete=725.00; int numberOfAthletes; double totalCost; String locationChoice; @Override prot

我试图找出这段代码不起作用的原因

最后一行是给我一个警告

“不要集中显示设置文本的文本”

任何帮助都将不胜感激

public class RegistrationActivity extends AppCompatActivity {
    double costPerAthlete=725.00;
    int numberOfAthletes;
    double totalCost;
    String locationChoice;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_registration);
        final EditText tickets = (EditText) findViewById(R.id.txtTickets);
        final Spinner location = (Spinner) findViewById(R.id.txtLocation);
        Button cost = (Button) findViewById(R.id.btnCost);
        cost.setOnClickListener(new View.OnClickListener() {
            final TextView result = ((TextView) findViewById(R.id.txtResult));

            @Override
            public void onClick(View view) {
                numberOfAthletes = Integer.parseInt(tickets.getText( ).toString( ));
                totalCost = costPerAthlete * numberOfAthletes;
                DecimalFormat currency = new DecimalFormat("$###,###.###");
                locationChoice = location.getSelectedItem( ).toString( );
                result.setText("Cost for" + locationChoice + "is" + currency.format(totalCost));

            }
        });
    }

}
XML文件

<?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: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.matt.triathlon.RegistrationActivity"
tools:showIn="@layout/activity_registration">

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/txtTitle"
    android:id="@+id/textView"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:textSize="32sp" />

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:inputType="number"
    android:ems="10"
    android:id="@+id/editText"
    android:layout_below="@+id/textView"
    android:hint="@string/txtTickets"
    android:textSize="22sp"
    android:layout_alignRight="@+id/textView"
    android:layout_alignEnd="@+id/textView"
    android:layout_alignLeft="@+id/textView"
    android:layout_alignStart="@+id/textView" />

<Spinner
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/txtLocation"
    android:layout_below="@+id/editText"
    android:layout_centerHorizontal="true"
    android:spinnerMode="dialog"
    android:entries="@array/txtLocation"
    android:focusableInTouchMode="false"
    android:prompt="@string/prompt" />

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/triathalon"
    android:src="@drawable/triathalon"
    android:layout_centerVertical="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:contentDescription="@string/description" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/btnCost"
    android:id="@+id/button"
    android:textSize="28sp"
    android:layout_below="@+id/triathalon"
    android:layout_centerHorizontal="true" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/button"
    android:layout_centerHorizontal="true"
    android:id="@+id/txtResult"
    android:textSize="22sp" />

</RelativeLayout>

布局中按钮的ID是
android:ID=“@+ID/button”
,而不是
android:ID=“@+ID/btnCost”

这就是为什么会出现NullPointerException

请将XML更改为使用正确的ID,或将Java代码更改为

Button cost = (Button) findViewById(R.id.button);

布局中按钮的ID是
android:ID=“@+ID/button”
,而不是
android:ID=“@+ID/btnCost”

这就是为什么会出现NullPointerException

请将XML更改为使用正确的ID,或将Java代码更改为

Button cost = (Button) findViewById(R.id.button);
改变

最好是创建自己的XML并遵循ids的约定 我用tvName表示(tv_name),btnLogin表示(btn_login)等,这样我就不会感到困惑。

更改

Button cost = (Button) findViewById(R.id.btnCost);

最好是创建自己的XML并遵循ids的约定
我使用tvName表示(tv_name),btnLogin表示(btn_login)等等,这样我就不会感到困惑。

在设置X之前,请尝试查看locationChoice和currency.format(totalCost)的值。我使用java已经有一段时间了,但是System.println(locationChoice);System.println(currency.format(totalCost));看看在设置文本之前这样做会发生什么。我这样说是因为如果我使用javascript,我会控制台.log(),所以我不是100%正确的方法,但可能值得检查println出现红色表示它无法解析方法这是哪种方法?我把System.println()放在这里,意思是System.out.println(myObject);不,这不起作用。在设置XT之前,请尝试查看locationChoice和currency.format(totalCost)的值。我已经使用java有一段时间了,但是System.println(locationChoice)是;System.println(currency.format(totalCost));看看在设置文本之前这样做会发生什么。我这样说是因为如果我使用javascript,我会控制台.log(),所以我不是100%正确的方法,但可能值得检查println出现红色表示它无法解析方法这是哪种方法?我把System.println()放在这里,意思是System.out.println(myObject);不,那没用。那有用的家伙谢谢你那有用的家伙谢谢你
Button cost = (Button) findViewById(R.id.button);