错误膨胀班级按钮

时间:2013-05-14 23:26:06

标签: android class button inflate

我刚开始学习计算机科学和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;
    }
}
}

这完全是出于我的学习目的,代码确实很糟糕。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分: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" />

答案 1 :(得分:1)

以下是一些可能对您有帮助的代码。

MainActivity:

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




}

activity_main.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" />

输出:

enter image description here

enter image description here