使用android在任何按钮中单击捕获

时间:2012-08-02 13:57:29

标签: java android onclick android-button

谁可以捕获任何按钮的点击?

final Button button = (Button) findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener() {
       public void onClick(View v) {
            Toast.makeText(WHKConversorActivity.this, "Hello World", Toast.LENGTH_SHORT).show();                    
       }
 });

这是点击button1,但我需要一个所有按钮的功能: - /。 javascript中的示例:

$('button').click(function(){
    alert($(this).val());
});

谢谢:)

5 个答案:

答案 0 :(得分:3)

如果您希望所有按钮完全相同(不太可能),您可以将相同的单击侦听器绑定到每个按钮。例如:

final Button button = (Button) findViewById(R.id.button1);
button.setOnClickListener(mGlobalClick);

final Button button2 = (Button) findViewById(R.id.button2);
button2.setOnClickListener(mGlobalClick);

... ect

OnClickListener mGlobalListener = new OnClickListener() {

    @Override
    public void onClick(View v) {
            //Stuff
            }
};

或者如果你想让每个按钮做一些不同的事情,但仍然需要为每个按钮做一些重新定义的功能,你可以将这部分代码放在一个单独的方法中并在每个点击监听器中引用它

public void GlobalStuff(){
     //Stuff
}

OnClickListener mSpecificListener = new OnClickListener() {

    @Override
    public void onClick(View v) {
            GlobalStuff();
            //More Stuff
            }
};

答案 1 :(得分:0)

javascript中没有通用的方法。您需要将点击处理程序分别分配给所有按钮。

答案 2 :(得分:0)

您可以尝试覆盖Button类,并在其构造函数中调用addListener

答案 3 :(得分:0)

假设您的活动中的所有视图都在某种ViewGroup中,您可以使用:

private void applyToAllButtons(ViewGroup viewGroup, OnClickListener listener) {
    for (int i = 0; i < viewGroup.getChildCount(); i++) {
        if (viewGroup.getChildAt(i) instanceof Button) {
            viewGroup.getChildAt(i).setOnClickListener(listener);
        }
    }
}

然后,在onCreate()中,执行以下操作:

@Override
public void onCreate(Bundle savedInstanceState) {
    ... // old code here
    View view = findViewById(R.id.layoutRoot);
    setContentView(view);
    OnClickListener listener = new OnClickListener() {
        public void onClick(View v) {
            // Do stuff here.
        }
    };
    applyToAllButtons((ViewGroup) view, listener);
}

答案 4 :(得分:0)

感谢杰克......这更有用:)减少变量,减少内存。 OnClickListener放在tiggers之前:

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        OnClickListener globalClick = new View.OnClickListener() {
            public void onClick(View v) {
                // some functions...
            }
        };

        /* Tiggers */
        findViewById(R.id.button1).setOnClickListener(globalClick);
        findViewById(R.id.button2).setOnClickListener(globalClick);
        findViewById(R.id.button3).setOnClickListener(globalClick);
        findViewById(R.id.button4).setOnClickListener(globalClick);
        findViewById(R.id.button5).setOnClickListener(globalClick);
}