我刚开始学习计算机科学和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;
}
}
}
这完全是出于我的学习目的,代码确实很糟糕。任何帮助将不胜感激。
答案 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" />
输出: