我正在尝试通过索引数组传递图像按钮作为参考。
我以为我可以设置ID,然后传递该ID:
MyButton=(ImageButton) findViewById(R.id.imageButton1);
MyButton.setId(0);
然后在我的onClick中我想传递索引“0”:
MyButton.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
if (MyButton.isSelected()){
Switch_Ctrl(0, OFF );
}
});
索引传递给方法:
boolean Switch_Ctrl(char button_num, byte state){
button_num.setImageResource(R.drawable.switch_off);
button_num.setSelected(false);
}
我得错误无法解析方法setImageResource。
所以我不能使用id“button_num”。不确定我如何引用ImageButton?
答案 0 :(得分:0)
您只需存储对按钮的引用并在onClick上进行更改即可。只需在Activity
或Fragment
中将其设为实例变量即可。您可以单独声明一个按钮,然后将其初始化onCreate
或onActivityCreated
(一旦findViewById可用)。例如
private Button myButton;
@Override
protected void onCreate(Bundle savedInstanceState){
myButton = (Button) findViewById(R.id.button);
myButton.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
changeButtonBackground(v.getId());
});
}
}
//if doing this for multiple butons, check which one
//was pressed and change the background
private void changeButtonBackground(int id){
if(id == R.id.myButton){
myButton.setBackground(R.drawable.whatever);
}
}
另外 - 我不会将我的按钮的ID设置为其他任何类似的东西。你的按钮已经有了一个id,它是你在XML中定义的那个:android:id =“@ + id / whateveritis”。除非您以编程方式创建XML中不存在的视图(例如,如果您在单击此按钮时将TextView添加到某个父布局),则无需定义新ID。