2011-09-29 55 views
0

我有按鈕,他們都完成了去下一個活動。Android - 如何使用setVisibility完成按鈕

但我想完成一個按鈕,其setVisibility就像下面的示例代碼。

Button failfiveButton = (Button)findViewById(R.id.failfive); 

failfiveButton.setOnClickListener(new OnClickListener() { 

    public void onClick(View v) { 
      Button button = (Button) v; 
      button.setVisibility(View.INVISIBLE); 
      mSoundManager.playSound(2); 
      finish(); 
    } 
}); 

Button failsixButton = (Button)findViewById(R.id.failsix); 

failsixButton.setOnClickListener(new OnClickListener() { 

    public void onClick(View v) { 
      Button button = (Button) v; 
      button.setVisibility(View.INVISIBLE); 
      mSoundManager.playSound(2); 
      finish(); 
    } 
}); 

因爲我有大約六以上代碼的按鈕,如果我添加finish(); mSoundManager.playSound(2);下,它可以追溯到第一。主要屏幕。而不是讓我繼續,讓其餘的按鈕不可見。

如果我沒有完成();應用程序因內存泄漏過多而滯後。

感謝

瓦希德

+0

['finish()'](http://developer.android.com/reference/android/app/Activity.html#finish%28%29)方法來自'Activity'類,而不是'Button'類。如果你想讓按鈕不可見,並清除佔用的空間,試試'button.setVisibility(View.GONE)' –

回答

0

它的發生,因爲以往的按鈕被點擊時調用此方法。它並不關心你點擊了多少個按鈕。在這裏,您正在爲每個按鈕點擊完成您的活動,所以這種情況正在發生。一個愚蠢的解決方案可能是這樣的

private static int count = 0; 
private static int count1 = 0; 
failfiveButton.setOnClickListener(new OnClickListener() { 

    public void onClick(View v) { 
count++ 
     Button button = (Button) v; 
     button.setVisibility(View.INVISIBLE); 
    mSoundManager.playSound(2); 
if(count == 6) 
    finish(); 
} 
}); 

    Button failsixButton = (Button)findViewById(R.id.failsix); 

     failsixButton.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 
        count1++ 
       Button button = (Button) v; 
       button.setVisibility(View.INVISIBLE); 
      mSoundManager.playSound(2); 
if(count1==6) 
      finish(); 
     } 
     }); 

編輯:可能有其他更好的方法來做到這一點。但我給了你這個解決方案,因爲我不知道你的目的究竟是什麼。

+0

謝謝,幫助很多! – Wahid