2011-11-02 63 views
0

我正在開發一個應用程序,我需要關閉某些按鈕上的onClicKListener。我有一個外部運行方法,我想在onClickListener上切換按鈕。在我的onCreate方法中,我有這樣的代碼:button.setOnClickListener(this);在我從外部調用的方法(這是一個不是onCreate的方法)我有一個聲明,它說button.setOnClickListener(null);滿足某種條件時。現在我想知道如何在相同的方法中滿足另一個條件時重新打開onClickListener。它不適用於button.setOnClickListener(this);在我的活動中,我通過擴展Activity實現OnClickListener或其他東西來實現onClickListener。提前致謝!Android在實現onClickListener時在外部方法中更改onClickListener

回答

2
private boolean enableClick; 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     Button button1 = (Button) findViewById(R.id.button1); 
     button1.setOnClickListener(new View.OnClickListener() 
      { 
       public void onClick(View v) 
       { 
        if(enableClick) 
        { 
         // do 
        } 
       } 
      } 
); 

    } 

你只需要更新enableClick的值。

1

您可以在onClick方法內部實施flag,該方法將防止在onClick內執行的方法。無需將onClickListener設置爲null,只需將flag設置爲false並且onClick方法將不會執行任何操作。希望這可以幫助。

+0

你可以通過代碼顯示這個,如何設置標誌?感謝您的回答 –

+0

Yaqub Ahmad發佈了一段代碼,完全符合他的回答 – Guillaume

2

而不是每次你不想讓按鈕工作時將onClickListener設置爲null,爲什麼不使用enabled屬性?

private Button myButton; 

@Override 
public void onCreate (Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    myButton = (Button) findViewById(R.id.mynewbutton); 
    myButton.setOnClickListener(/* your click listener here */); 
    myButton.setEnabled(false); 
} 

private void whateverFunction() { 
    if(true) { 
     myButton.setEnabled(true); 
    } else { 
     myButton.setEnabled(false); 
    } 
} 

這樣,您可以在禁用觸摸時使其不響應。

相關問題