我在10X10网格中有100个按钮。 他们都称同样的方法“去”。
问题是,当我按下任何按钮时,它的文本会按预期发生变化, 但是当我在此之后按下其他按钮时,初始按钮的文本将被重置。
以下是来自activity_main.xml的按钮代码:
<Button
android:onClick="go"
android:id="@+id/r1b1"
android:layout_width="0dp"
android:layout_height="30dp"
android:layout_weight="1"
android:text="@string/button"
android:textSize="12dp"/>
这是我的main_activity.java:
package com.example.battleships;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity {
public char[][] a=new char[3][3];
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void go(View view)
{
setContentView(R.layout.activity_main);
Button r1b1 = (Button)findViewById(view.getId());
TextView op1 = (TextView)findViewById(view.getId());
op1.setText("X");
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
答案 0 :(得分:1)
go例程写得不好。
你重新设置主窗口(为什么?)
您将视图重新分配给TextView(为什么?)
然后设置TextView的文本(为什么?)。
我会在第1行和第3行注释掉并从
更改第4行op1.setText("X");
到
r1b1.setText("X");
答案 1 :(得分:1)
从setContentView(R.layout.activity_main)
方法移除go(View v)
。
答案 2 :(得分:0)
您的100个按钮不能都具有相同的ID。 Android会允许它(虽然给你一个警告),但这是糟糕的设计。您应该做的是以编程方式向视图添加按钮,为您创建的每个按钮创建唯一ID,并在创建时设置onClickListeners。