4

我刚开始学习计算机科学和 Android 开发。我一直在通过一些 helloworld 演示来尝试和学习。

如此疯狂,我尝试使用 onClickListener 重写一个具有两个按钮的按钮的程序。虽然我没有任何编译错误,但我的程序强制关闭我:

01-05 11:20:33.968:E/AndroidRuntime(3257):java.lang.RuntimeException:无法启动活动 ComponentInfo{com.example.multbuttontest/com.example.multbuttontest.MultiButtonActivity}:android.view.InflateException:二进制XML 文件第 16 行:膨胀类按钮时出错

我的 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=".MultiButtonActivity">

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/hello_world" />

<button 
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

<button
    android:id="@+id/button2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

和代码:

package com.example.multbuttontest;

import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.widget.Button;

public class MultiButtonActivity extends Activity implements View.OnClickListener{

Button button1, button2;
int touchCount1, touchCount2;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_multi_button);

    button1 = (Button) findViewById(R.id.button1);
    button1.setText( "Touch Button 1!");
    button1.setOnClickListener(this);

    button2 = (Button) findViewById(R.id.button2);
    button2.setText( "Touch Button 2!");
    button2.setOnClickListener(this);
}

public void onClick(View v){
    switch(v.getId()){
        case R.id.button1:
            touchCount1++;
            button1.setText("Touched b1 " + touchCount1 + " times(s)");
            break;
        case R.id.button2:
            touchCount2++;
            button2.setText("Touched b2 " + touchCount2 + " times(s)");
            break;
    }
}
}

这严格来说只是为了我的学习目的,而且代码确实很糟糕。任何帮助,将不胜感激。

4

2 回答 2

8

不是button,是Button。XML 标记指向框架中的 java 类。Java 是区分大小写的。

<Button 
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

<Button
    android:id="@+id/button2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />
于 2013-05-14T23:30:20.180 回答
1

这是一些可能对您有所帮助的代码。

主要活动:

public class MainActivity extends Activity 
{
    private TextView txt1;
    private Button btnCount,btnClear; 
    private int num1 = 1;


@Override
protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    txt1 = (TextView) findViewById(R.id.txt1);

    btnCount = (Button) findViewById(R.id.button1);
    btnClear = (Button) findViewById(R.id.button2);


}

public void sendMessage(View view) 
{
     txt1.setText("You have clicked"+ (num1) + "times");
     num1++;

}

public void clear(View view)
{
    num1 = 1;
    txt1.setText("You have clicked"+ (num1) + "times");
}




}

活动主.xml:

 <Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/button_send" 
    android:onClick="sendMessage" />
 <Button
    android:id="@+id/button2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/button_clear" 
    android:onClick="clear" />

<TextView        
    android:id="@+id/txt1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"

    android:text="@+string/pushed" />

输出:

在此处输入图像描述

在此处输入图像描述

于 2013-05-14T23:37:45.933 回答