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);