2017-10-17 88 views
-5

我想設置按鈕點擊這樣的事情:如何聲明布爾內按鈕點擊?

boolean isLightOn = false; 
    if(!isLightOn) 
    { 
     FlashTask.flash.on(); 
     isLightOn=true; 
     return; 
    } else { 
     FlashTask.flash.off(); 
     isLightOn=false; 
     return; 
    } 

但它不工作... 感謝提前。

+0

你的意思是閃光燈不工作? – kimkevin

+2

在**外部聲明變量**按鈕點擊處理程序 –

+2

*但它不工作*不是有效的錯誤 –

回答

2

每次單擊該按鈕時,boolean isLightOn = false;被調用,並且isLightOn在單擊按鈕時將始終爲假。你不保留以前的狀態。

要保留狀態,請將isLightOn作爲類變量,並從您的偵聽器方法中刪除boolean isLightOn = false;

0

你需要像這樣的東西。

private boolean isLightOn = false; //defined as class variable; 

button.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     if(!isLightOn){ 
      FlashTask.flash.on(); 
      isLightOn=true; 
     }else { 
      FlashTask.flash.off(); 
      isLightOn=false; 
     } 
    } 
}); 

但確保isLightOn定義在偵聽器範圍之外。

+0

java中沒有全局變量:) –

+0

我的意思是類變量。 –

2

很難知道沒有看到你所有的代碼。但是你可以聲明一個變量爲字段成員,然後在每次點擊按鈕時進行更改。 這是最簡單的方法:

public class MyActivity extends Activity { 
    //boolean field member initialized as false by default 
    private boolean isLightOn; 

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

     final Button button = findViewById(R.id.button_id); 
     button.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      if(isLightOn){ 
       FlashTask.flash.off(); 
      } else{ 
       FlashTask.flash.on(); 
      } 
      isLightOn = !isLightOn; 
     } 
     }); 
    } 
}