2014-04-19 29 views
0

我在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; 
    } 
} 
+1

哪裏是百個按鈕代碼,我在上面的代碼中看不到,只有一個按鈕,我可以看到 – KOTIOS

+0

去例程寫得不好。你重新設置主窗口(爲什麼?)。你重新分配視圖到一個textview(爲什麼?)。然後設置TextView的文本(爲什麼?)。它應該是'r1b1.setText(「X」);'。所以,我會評論第一和第三行,並改變第四行。 –

+0

所有按鈕使用相同的代碼。當然,ID是差異 – user3430238

回答

1

go(View v)方法去除setContentView(R.layout.activity_main)

1

圍棋程序寫得不好。
您重新設置主窗口(爲什麼?)。
您將視圖重新分配給TextView(爲什麼?)。
然後設置TextView的文本(爲什麼?)。

我會註釋掉第一次和走3號線和

op1.setText("X"); 

改變4日至

r1b1.setText("X"); 
0

您的100個按鈕不能全部具有相同的ID。 Android會允許它(儘管給你一個警告),但它是不好的設計。你應該做的是以編程方式向你的視圖添加按鈕,爲你創建的每個按鈕創建唯一的ID,並在創建它們時設置onClickListeners。