使用for循环在Android按钮上查找并设置onClickListener [Android]

时间:2016-09-07 18:49:07

标签: java android onclicklistener android-button

我在布局文件中创建了10个按钮,现在我想“找到”它们并将它们存储在一个数组中。现在我想要在每个按钮上放置一个不同的OnClickListener,这样我按下的每个按钮都会执行其他操作。 (在我的情况下,我希望他们提交0-9的值,所以第一个按钮提交0,第二个按钮提交0,等等)。这是我到目前为止的代码:

package de.lucbe.tilt;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity{

Button[] buttons = new Button[10];

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    for(int i = 0;i < buttons.length; i++ ){
        String buttonID = "button" + i;
        int resID = getResources().getIdentifier(buttonID, "id", getPackageName());
        buttons[i] = ((Button) findViewById(resID));
    }
}

}

提前谢谢。

3 个答案:

答案 0 :(得分:0)

    for(int i = 0;i<buttons.length;i++){
        Button = buttons[i];
        Button.setId(i);
        Button.setOnClickListener(this);
    }

在点击按钮时会将数字作为id抛出:)

答案 1 :(得分:0)

为简单起见,您可以在 MainActivity类中实施OnClickListener

    public class MainActivity extends AppCompatActivity implements View.OnClickListener
    {

 @Override
     protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        f1 =(Button) findViewById(R.id.f1);
        f1.setOnClickListener(this);

        f2 =(Button) findViewById(R.id.f2);
        f2.setOnClickListener(this);
     }
}

然后你必须覆盖 onClick方法并切换view.getId()

@Override
public void onClick(View v) {
    switch (v.getId()) {
    case R.id.f1:
        // your code here
        break;
    case R.id.f2:
        // your code here 
        break;
    }
}

答案 2 :(得分:0)

无需额外的循环。 在你的循环中,在初始化之后只需添加一行: 按钮[I] .setOnClickListener(本);

实现OnClickListener的ineferfave,然后在overRidden onClick方法内部为各种id设置一个switch case