2012-08-15 72 views
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(); 
     } 

    } 
}; 
+0

会发生什么情况?他们最终都看到相同的ID相同? – 2012-08-15 21:59:53

+0

此代码是wiered,我的意思是ID不是这种代码的方式,它只是一个尝试,其他按钮的ID和图像更改 – Art 2012-08-15 22:08:21

回答

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

+0

但按钮是随机分布的,ID不在一个序列 – Art 2012-08-15 22:34:21

+0

这件事你说的很好,但是当按钮顺序排列时,我想识别与点击按钮相邻的按钮 – Art 2012-08-15 23:04:20