我在布局文件中创建了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));
}
}
}
提前谢谢。
答案 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