我的应用程序中有3个按钮, 按钮id = button1,button2,button3。 button1和button3需要做同样的动作,退出游戏 - 工作。 button2需要向计数器添加1并将文本更改为计数器(用于分数) 所以我做了一个int counter = 0,当我按下button2时,试图让脚本和应用程序崩溃,这里是logcat和脚本:
package com.example.bluetap;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.PaintDrawable;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class FirstActivity extends Activity implements OnClickListener {
private TextView changingTextView;
private Button button1;
private Button button2;
private Button button3;
private int counter=0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
changingTextView = (TextView) findViewById(R.id.changingTextView);
button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(this);
button2 = (Button) findViewById(R.id.button2);
button2.setOnClickListener(this);
button3 = (Button) findViewById(R.id.button3);
button3.setOnClickListener(this);
}
public void onClick(View v) {
int id = v.getId();
if (id == R.id.button1) {
finish();
System.exit(0);
}
else if (id == R.id.button2) {
counter++;
changingTextView.setText(counter);
}
else if (id == R.id.button3) {
finish();
System.exit(0);
}
}
}
这是main.xml:
<RelativeLayout 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="@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.bluetap.FirstActivity$PlaceholderFragment" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:minWidth="200dp"
android:text="Press The White Button"
android:textColor="@color/blue" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/button1"
android:layout_below="@+id/button1"
android:background="@android:color/white"
android:minWidth="200dp"
android:text="Press The White Button"
android:textColor="@color/blue" />
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/button2"
android:layout_below="@+id/button2"
android:minWidth="200dp"
android:text="Press The White Button"
android:textColor="@color/blue" />
<TextView
android:id="@+id/changingTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/button3"
android:layout_below="@+id/button3"
android:layout_marginLeft="80dp"
android:layout_marginTop="95dp"
android:text="0"
android:textSize="60sp" />
这是logcat:
答案 0 :(得分:3)
TextView.setText(int)
需要资源标识符。您试图在TextView
中显示实际的int值。 Android会查找具有该值的资源,但该资源无法找到。因此崩溃了你的应用程序。
首先使用changingTextView.setText(String.valueOf(counter));
将其转换为String
。
答案 1 :(得分:1)
你有问题:
else if (id == R.id.button2) {
counter++;
changingTextView.setText(counter);
}
您不能将整数值设置为TextView,因此您需要将其强制转换为String。
你可以使用:
changingTextView.setText(""+counter);
或
changingTextView.setText(Integer.toString(counter));
或
changingTextView.setText(String.valueOf(counter));