我的应用程序在按钮点击时崩溃

时间:2014-06-15 11:58:50

标签: android

我的应用程序中有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:

enter image description here

2 个答案:

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