0

我正在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();
        }

    }
};
4

1 回答 1

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 和图像,而不是按钮引用。

于 2012-08-15T22:08:36.543 回答