1

我的 Activity 上有一系列 ImageViews。我想在其中一个被触摸时执行一个方法。我有下一个:

  public void onClick(View v) {

          switch(v.getId()){

          case R.id.image1:
              mymethod(1,1,movimientos,(ImageView)v);
              break;
          case R.id.image2:
              ponerficha(1,2,movimientos,(ImageView)v);
              break;
          case R.id.image3:
...

但是方法没有执行,问题不是方法,因为案例中的任何代码都不起作用。任何的想法?

4

3 回答 3

1

首先,您需要检查您是否已经注册onClickListener了您的Images

image.setOnClickListener(this);

(如果你的类实现了 OnClickListener 接口,你必须使用它)

然后你如何声明和初始化你的ImageViews,是否有自己的ID。

image = (ImageView) findViewById(R.id.someId)
anotherImage = (ImageView) findViewById(R.id.anotherId)
...

您可以使用onClickListeners类似的匿名类,例如

image.setOnClickListener(
   new View.OnClickListener() {
      public void onClick(View v) {
         // some actions
      }
});

但在您有许多小部件要设置实现的情况下更复杂和更好OnClickListener

public class ClassName extends Activity implements View.OnClickListener {}
于 2012-06-10T23:27:29.187 回答
0

首先,您的活动必须像这样实现 View.OnClickListener

public class myActivity implements View.OnClickListener {

然后你需要为你的 ImageViews 设置你的点击监听器。如果您所有的 ImageViews 都在线性布局中,那么代码将如下所示

LinearLayout llImageViewHolder = (LinearLayout) findViewById(R.id.llImageViewHolder);
for (int i = 0; i < llImageViewHolder.getChildCount(); i++ {
    ImageView iv = (ImageView) llImageViewHolder.getChildAt(i);
    iv.setOnClickListener(this);
}

干杯。

于 2012-06-10T23:30:13.230 回答
0

您需要为每个有兴趣处理点击的视图添加一个 onClick 处理程序。

你如何做取决于你想如何处理点击事件。您可以使用 hawaii.five-0 的方法并为所有内容设置一个事件处理程序,或者您可以为每个视图项设置一个事件处理程序,您可以将其添加到活动的 onCreate 方法中:

ImageView imageView = (ImageView) findViewById(R.id.image_view);
imageView.setOnClickListener(new OnClickListener() 
{
    @Override
    public void onClick(View v) 
    {
        // Do something
    }
}
于 2012-06-10T23:31:17.727 回答