2015-10-18 50 views
1

因此,我仍然在學習Android Studio,我試圖通過製作一個簡單的重擊式遊戲模糊我的方式。一個9個按鈕的網格被隱藏,當一個按鈕被點擊時,一個隨機數發生器設置一個int變量,然後通過一個開關設置下一個按鈕的可見性。Android Studio - 任何按鈕上的Clicklistener?

這一直很好,直到我想給分數int增加+1。每個按鈕都有它自己的clicklistener,它有自己的(當然非常低效的)拷貝,如果語句檢查它是否已經可見等,我不能讓它們全部更新相同的變量,因爲它需要聲明爲final,但是當我這樣做只是說不能分配變量。

那麼有可能在任何按鈕上做一個類似clicklistener的東西而不是特定的按鈕?然後,我可以定義和更新該方法中的變量(如果這是正確的術語)。

這裏的第一個按鈕的外觀快速複製一樣是可見的,直到第一次點擊 -

button0.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      button0.setVisibility(View.INVISIBLE); 
      Random rand = new Random(); 
      int n = rand.nextInt(9); 

      switch (n) { 
       case 0: 
        if(button0.getVisibility() == View.INVISIBLE){ 
         button0.setVisibility(View.VISIBLE); 
        }else{ 
         button0.setVisibility(View.INVISIBLE); 
        } 
        break; ... and so on 

所以我想是這樣的(這顯然作品) -

button0 or button1 or button2 or button3 or button4.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      int scoreint = 0; 
      scoreint++; 
      scoreText.setText(""+scoreint); 
     }; 

就像我說的,我知道這是做事最低效和最慢的方式,但我仍然在學習,喜歡以最簡單,最愚蠢的方式做事,以便我能夠獲得核心概念。我也在看教程,但我也喜歡一個小項目進入。謝謝你的幫助!

+0

是有可能的,你檢查v.getId()對每個單獨的按鈕的ID來了解你點擊其中一個 – Blackbelt

+0

非常感謝你的回覆,另一個答案已經說了類似的東西,所以它給了我一些東西來看看 - 再次感謝! – wgibbsw

回答

0

我跳這個代碼皮斯幫助你

public class MainActivity extends ActionBarActivity implements View.OnClickListener{ 



protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 


    button0 = (Button)findViewById(R.id.button0); 
    button0.setOnClickListener(this); 

    button1 = (Button)findViewById(R.id.button1); 
    button1.setOnClickListener(this); 

    //and on .... 
    } 

public void onClick(View view) 
{ 
    switch (view.getId()) 
    { 
     case R.id.button0 : 
     // do sum thing 
      break; 
     case R.id.button1 : 
     // do sum thing 
      break; 
    } 

} 

}

+0

非常感謝答案和一些示例代碼,這非常有幫助。我從來沒有想過在按鈕上使用另一個開關,但我仍然有一個問題。我在開關代碼中得到「無法解析符號」錯誤和int變量。當我在onClick中定義我的int變量時,這會消失,但當我移動按鈕時也不會。我一定在某處丟失了某些東西:/ – wgibbsw

+0

即時通訊很高興它可以幫助您 –

+0

我認爲您需要將分數int用作全局變量,因爲如果它在交換機中,分數int超出範圍,請嘗試此操作並讓我知道 –