Android在实现onClickListener时在外部方法中更改onClickListener

时间:2011-11-02 08:58:16

标签: android onclick

我正在开发一个应用程序,我需要在某些按钮上关闭 onClicKListener

我有一个外部运行方法,我想在onClickListener上切换按钮。在我的onCreate方法中,我有这样的代码:

button.setOnClickListener(this); 

在我外部调用的方法中(这是一个不在onCreate上的方法)我有一个语句,当满足某个条件时会说button.setOnClickListener(null);

现在我想知道如果在同一方法中如果满足另一个条件,则重新开启onClickListener。它不适用于button.setOnClickListener(this);

在我的活动中,我通过扩展活动实施onClickListener 等来实施OnClickListener

提前致谢!

3 个答案:

答案 0 :(得分: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);
    }
}

这样,您可以在禁用时对触摸做出响应。

答案 1 :(得分: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的值。

答案 2 :(得分:1)

您可以在flag方法中实现onClick,以保护在onClick内执行的方法。无需将onClickListener设置为null,只需将flag设置为falseonClick方法将不执行任何操作。希望这会有所帮助。