0

私はアンドロイドでピクチャーパズルを開発しています。白いボタンを除いて、それぞれ独自の画像を持つ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

既存のボタンへの参照のみを保持している場合、最初の行はボタンの COPY を作成していると想定しています。次に、ボタンの 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 に答える