2013-04-02 77 views

回答

3

您不必为所有图像使用不同的处理程序。对所有图像使用一个处理程序。这将使你的代码更加清洁,易于管理并解决你的问题。

public void onCreate(Bundle bundle) { 
    //... 

    OnClickListener mHandler = new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      switch(v.getId()) { 
       case R.id.img1: 
        //.. 
        break; 

       case R.id.img2: 
        //.... 
        break; 
      } 
     } 
    }; 

    ImageButton btn1 = (ImageButton)findViewById(R.id.img1); 
    ImageButton btn2 = (ImageButton)findViewById(R.id.img2); 
    //... 

    btn1.SetOnClickListener(mHandler); 
    btn2.SetOnClickListener(mHandler); 
    //... 
} 
+0

谢谢你的回答..你在你的代码中提到的OnClickHandler类是你自己的类,因为我找不到它。如果是这样,它继承了哪个类? –

+0

它在View.OnClickListener中。而且它是一个接口。如果你想要,你可以在你的类中实现接口,然后调用'btn.SetOnClickListener(this);' –

+0

对不起,那是我的错。我把它拼写成“OnClickHandler”。这当然是'OnClickListener'。直到现在我还没有注意到它。 –

2

一个Listener来统治它们。

  1. 在物体上实现onClick(),其注册为监听器

  2. onClick(),检查作为参数传递的View对象,以确定该图像的被单击。你可以做任何事情从getId()到铸造它(ImageView)并获得实际的图像。

  3. 一旦你知道哪个图像被点击了,你会用它做什么。

+0

在对象上实现onClick(),将其注册为侦听器 - 你的意思是实现OnClickListener接口并重写onClick()方法吗? –

+0

确实。然后调用'setOnClickListener' – slezica

+0

好的..谢谢:) –

0

如果你正在寻找实现一个ImageView(或其他)定制行为,然后有一个类型的视图的多个实例,你应该继承的ImageView,把你的听众在那里。然后你会得到一个封装的View,它实现了你想要的自定义行为,如果你以后决定要多或少需要或者将它们放在另一个地方,那么很容易移动View及其行为而不会撕裂你的Activity