2016-07-03 18 views
0

我有這個在我的代碼和.setPressed不起作用:setPressed不工作

Button btndesligado = (Button) findViewById(R.id.button12); 
btndesligado.setOnClickListener(new OnClickListener() { //Botão para pôr silêncio! 

    @Override 
    public void onClick(View v) { 

     btndesligado.setPressed(true); 
     som = false; 
     vibrar = false; 

    } 
}); 

有什麼不對?它不會給我任何錯誤,當我打開它並單擊它時它不起作用。我按了一次後被按下。

回答

0

試試這個方法。

btndesligado.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      btndesligado.setPressed(true); 
      som = false; 
      vibrar = false; 
     } 
    }); 
+0

現在它說,把最後的修飾符btndesligado,但即使把最終它不起作用。 –

+0

不要聲明它爲final ...通過在onCreate之外聲明按鈕或通過創建一個單獨的函數來避免這種情況。有用。我測試過了。 –

1

Android正在改變setPressed這似乎沒有錯,之前和之後你onClickEvent

所以這段代碼

btndesligado.setOnClickListener(new OnClickListener() { //Botão para pôr silêncio! 

    @Override 
    public void onClick(View v) { 

     btndesligado.setPressed(true); 
     som = false; 
     vibrar = false; 

    } 
}); 

改變你的代碼,這

btndesligado.setOnTouchListener(new OnTouchListener() { 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 

      // show interest in events resulting from ACTION_DOWN 
      if (event.getAction() == MotionEvent.ACTION_DOWN) return true; 

      // don't handle event unless its ACTION_UP so "doSomething()" only runs once. 
      if (event.getAction() != MotionEvent.ACTION_UP) return false; 


      btndesligado.setPressed(true);  
      som = false; 
      vibrar = false;     
      return true; 
     } 
    }); 
1

您代碼,它和你一樣工作,它設置視圖的內部統計e「按下」或false以從先前設置的「按下」狀態恢復視圖的內部狀態。你已經把裏面按鈕的onClick意味着你按下按鈕後才起作用,

如果你想要把它壓或恢復然後做這樣的,

Button btndesligado = (Button) findViewById(R.id.button12); 
btndesligado.setPressed(true); 
btndesligado.setOnClickListener(new OnClickListener() { //Botão para pôr silêncio! 

    @Override 
    public void onClick(View v) { 
     som = false; 
     vibrar = false; 

    } 
});