我是android app开发的初学者,我的页面中有几个按钮,我想通过点击更改图像。但是,尽管我按照顺序标记了按钮并使用了id来创建oncreate方法中的按钮,但是当我测试时它并没有改变图像以获得正确的按钮。例如,如果编写代码以触发第二个按钮,则会触发第5个按钮。我希望我的问题是可以理解的。代码如下。
public class StartGameActivity extends Activity implements View.OnClickListener{
Button one, two, three, four, five, six, seven, eight, nine;
int counter, onOff;
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
this.setContentView(R.layout.game_start);
one = (Button) findViewById(R.id.empty_button);
two = (Button) findViewById(R.id.empty_button2);
three = (Button) findViewById(R.id.empty_button3);
four = (Button) findViewById(R.id.empty_button4);
five = (Button) findViewById(R.id.empty_button5);
six = (Button) findViewById(R.id.empty_button6);
seven = (Button) findViewById(R.id.empty_button7);
eight = (Button) findViewById(R.id.empty_button8);
nine = (Button) findViewById(R.id.empty_button9);
one.setOnClickListener(this);
two.setOnClickListener(this);
three.setOnClickListener(this);
four.setOnClickListener(this);
five.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if(v == one){
v.setPressed(true);
v.setBackgroundResource(R.drawable.circle);
}
else if(v == two){
v.setPressed(true);
v.setBackgroundResource(R.drawable.circle);
}
这是xml
<?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:orientation="vertical" >
<ImageView
android:contentDescription="@string/game_board"
android:src="@drawable/gameboard2"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scaleType="fitXY"/>
<Button
android:id="@+id/empty_button"
android:layout_width="75dp"
android:layout_height="75dp"
android:layout_alignBaseline="@+id/empty_button3"
android:layout_alignBottom="@+id/empty_button3"
android:layout_alignLeft="@+id/empty_button4"
android:background="@drawable/customemptybutton" />
<Button
android:id="@+id/empty_button2"
android:layout_width="75dp"
android:layout_height="75dp"
android:layout_above="@+id/empty_button5"
android:layout_alignLeft="@+id/empty_button5"
android:background="@drawable/customemptybutton2"
android:gravity="center" />
直到最后,它几乎同样如此
答案 0 :(得分:0)
请阅读您的评论。
请发布你的xml,你确定Java假定的id与XML匹配吗?此外,您不需要在onClick()中设置setPressed()。由于所有按钮都共享同一个监听器,因此我发现以下做法更好,而不是保留对所有按钮的引用。
public void onClick(View v) {
switch (v.getId()) {
case R.id.button1:
// application logic
case R.id.button2:
//application logic
}
}