Android 只包含三个按钮的简单应用程序:加号按钮、减号按钮和重置按钮
我正在创建一个简单的Android应用程序,它只包含三个按钮:加号按钮、减号按钮和重置按钮。 但不幸的是,当我按下三个按钮中的一个时,我的应用程序崩溃了 以下是我的主要活动代码:Android 只包含三个按钮的简单应用程序:加号按钮、减号按钮和重置按钮,android,button,layout,Android,Button,Layout,我正在创建一个简单的Android应用程序,它只包含三个按钮:加号按钮、减号按钮和重置按钮。 但不幸的是,当我按下三个按钮中的一个时,我的应用程序崩溃了 以下是我的主要活动代码: import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.wi
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class Main extends Activity implements OnClickListener{
Button btnAdd, btnMinus, btnReset;
TextView tvCounter;
int count = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnAdd = (Button)findViewById(R.id.addButton);
btnMinus = (Button)findViewById(R.id.minusButton);
btnReset = (Button)findViewById(R.id.resetButton);
btnAdd.setOnClickListener(this);
btnMinus.setOnClickListener(this);
btnReset.setOnClickListener(this);
tvCounter = (TextView)findViewById(R.id.counterTextView);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.addButton:{
count++;
tvCounter.setText(count);
}
break;
case R.id.minusButton:{
count--;
tvCounter.setText(count);
}
break;
case R.id.resetButton:{
count = 0;
tvCounter.setText(count);
}
break;
default:
break;
}
}
}
这是我的布局文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/tasbih"
android:orientation="vertical" >
<TextView
android:id="@+id/counterTextView"
android:layout_width="fill_parent"
android:layout_height="70dp"
android:layout_alignParentTop="true"
android:textSize="50sp"
android:textColor="#000000"
android:layout_marginTop="30dp"
android:text="0"
android:background="#FFFFFF"
android:textAppearance="?android:attr/textAppearanceLarge" />
<Button
android:id="@+id/addButton"
style="@style/buttonStyle"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="+" />
<Button
android:id="@+id/resetButton"
style="@style/buttonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/addButton"
android:layout_toLeftOf="@+id/addButton"
android:text="Reset" />
<Button
android:id="@+id/minusButton"
style="@style/buttonStyle"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_above="@+id/addButton"
android:layout_toRightOf="@+id/addButton"
android:text="-" />
</RelativeLayout>
您是否有意将
tvCounter
的文本设置为整数,count
?您应该将文本设置为字符串值:tvCounter.setText(string.valueOf(count))代码>除非您打算通过字符串资源ID设置文本
setText
函数可以接受引用字符串资源的int值(请参阅)。您提供的给定int
可能找不到字符串资源(count
)
关于switch-case语句的另一个注意事项是:当使用build tools revision14+时,不建议(不允许)在case上使用非常量的switch-case。有关更多详细信息,请参阅本页:
警告:在库项目中将ID生成为非最终ID意味着库代码不能将这些ID视为常量。例如,这意味着您不能在switch语句中使用res id
在您提供的代码中,您正在检查按钮ID(R.ID.minusButton
等)。您应该将开关/机箱更改为类似以下内容:
if(v.getId() == R.id.addButton) {
count++;
tvCounter.setText(String.valueOf(count));
}
else if(v.getId() == R.id.minusButton) {
count--;
tvCounter.setText(String.valueOf(count));
}
else if(v.getId() == R.id.resetButton) {
count = 0;
tvCounter.setText(String.valueOf(count));
}
在我看来,您的视图中没有找到ID。也许你们可以做些类似的事情来代替那个份案例陈述
if (butnAdd == v) {
} else if (btnMinus == v) {
} else if (btnReset == v) {
} else {
}
用以下代码替换整个onClick方法:
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.addButton:
count++;
break;
case R.id.minusButton:
count--;
break;
case R.id.resetButton:
count = 0;
break;
}
tvCounter.setText(String.valueOf(count));
}
类型转换错误,您正在将整型数据设置为文本类型 打开logcat并将错误日志粘贴到此处,这可能是告诉我们哪个按钮不起作用的最好方法。现在我想在我的应用程序中添加一个功能,即在10到15分钟的间隔后,全天重复一些声音@宾尼你知道这件事吗?
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.addButton:
count++;
break;
case R.id.minusButton:
count--;
break;
case R.id.resetButton:
count = 0;
break;
}
tvCounter.setText(String.valueOf(count));
}