找到并设置onClickListener上的按钮使用循环[Android]



我已经在布局文件中创建了10个按钮,现在我想"找到"它们并将它们存储在数组中。现在我还想在每个按钮上放一个不同的OnClickListener这样我按下的每个按钮都会做一些别的事情。(在我的例子中,我希望它们提交0-9之间的值,所以第一个按钮提交0,第二个按钮提交1,等等)。下面是我到目前为止的代码:

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));
    }
}

}

提前感谢。

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

在点击按钮将抛出这些数字作为id:)

为了使事情变得简单,你可以实现OnClickListener到你的MainActivity类:

    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;
    }
}

不需要额外的循环。在你的循环中,初始化它们之后,只需要写一行:按钮[我].setOnClickListener(这);

实现OnClickListener interinterfave然后在重载的onClick方法中为各种id添加一个switch case

最新更新