2016-03-01 45 views
0

我想在Toggle Button上使用Long-Click偵聽器來鎖定/解鎖按鈕的正常點擊動作(以避免意外點擊)。下面的代碼似乎沒有效果。我試過.isActivated.isCickable.isEnabled屬性沒有運氣......可能嗎?OnLongClickListener鎖定/解鎖切換按鈕操作

final ToggleButton btnStartStop = (ToggleButton) findViewById(R.id.toggleAction); 
    btnStartStop.setOnLongClickListener(new View.OnLongClickListener() { 
     @Override 
     public boolean onLongClick(View v) { 
      // TODO Auto-generated method stub 
      if (btnStartStop.isActivated()) { 
       btnStartStop.setActivated(false); 
      } else { 
       btnStartStop.setActivated(true); 
      } 
      return true; 
     } 
    }); 
+0

你爲什麼使用長按。你可以使用單擊或setOnCheckedChangeListener –

回答

0

也許使用布爾?

Boolean longPress = false; 

final ToggleButton btnStartStop = (ToggleButton) findViewById(R.id.toggleAction); 
btnStartStop.setOnLongClickListener(new View.OnLongClickListener() { 
    @Override 
    public boolean onLongClick(View v) { 
     // TODO Auto-generated method stub 
     if (longPress) { 
      longPress = false; 
     } else { 
      longPress = true; 
     } 
     return true; 
    } 
}); 

onClick()

btnStartStop.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 

    if(!longPress){ 
     //Do stuff 
    } 
    else{ 
     Toast.makeText(getApplicationContext(), "Button is locked!\nLong press button to unlock it",Toast.LENGTH_SHORT).show(); 
    } 
}); 
0

你需要改變你的代碼段爲

final ToggleButton btnStartStop = (ToggleButton) findViewById(R.id.toggleAction);   btnStartStop.setOnLongClickListener(new View.OnLongClickListener() { 
     @Override 
     public boolean onLongClick(View v) { 
      // TODO Auto-generated method stub 
      if (togglePref.isChecked()==(true)) 
      { 

      // button is checked 

      } 

      else 
       { 

       // button is unchecked 

       } 

      return true; 
     } 
    }); 
+0

這些方法如何使用鎖定/解鎖來使用切換按鈕?這是我的首要要求。我想使用長按事件來啓用/禁用相同按鈕的正常點擊操作。 –

+0

@ChrisKing我沒有得到你的問題。請更具體一些 –