我在android中开发了一个图片拼图,我有9个按钮,每个按钮都有自己的图像,除了一个是白色的,现在我想要的是当我点击任何按钮时,白色按钮或以下或者在白色白色按钮上方,按钮交换的属性,我的意思是白色按钮变为点击按钮,点击的按钮变为白色按钮和它们的ID。我这样做但似乎不合逻辑,也没有用。
private OnClickListener btnClick = new OnClickListener() {
public void onClick(View Sender) {
ImageButton Incoming=(ImageButton) Sender;
try{
ImageButton temp=MyButtons[Incoming.getId()];
MyButtons[Incoming.getId()].setImageDrawable(MyButtons[Incoming.getId()-1].getDrawable());
MyButtons[Incoming.getId()].setId(MyButtons[Incoming.getId()-1].getId());
MyButtons[Incoming.getId()-1].setImageDrawable(temp.getDrawable());
MyButtons[Incoming.getId()-1].setId(temp.getId());
}
catch (Exception e) {
// TODO: handle exception
Toast.makeText(getBaseContext(), e.toString(), Toast.LENGTH_LONG).show();
}
}
};
答案 0 :(得分:0)
您拥有的代码与此类似:
Button temp = MyButtons[1];
MyButtons[1].id = MyButtons[0].id;
MyButtons[0].id = temp.id; // FAIL - same as MyButtons[0].id = MyButtons[1].id
您假设第一行只是按住对现有按钮的引用而对该按钮进行复制。然后设置按钮的ID:
MyButtons[Incoming.get()].setId(MyButtons[Incoming.getId()-1].getId());
然后尝试设置其他按钮的ID:
MyButtons[Incoming.get()-1].setId(temp.getId()));
与:
完全相同MyButtons[Incoming.get()-1].setId(MyButtons[Incoming.getId()].getId());
您需要保存ID和图像,而不是按钮参考。