如何使用setOnClickListener将预置方法放入View v中的内容?

时间:2014-04-09 01:55:44

标签: java android

好吧,我试图设置动态按钮,我已经通过开关设置了动态成像,我试图弄清楚我需要放入什么(查看v)设置特定方法的字段,下面是我将使用此函数的代码部分:

这是我用来将图像资源设置为当前活动的imageview的方法:(我删除了案例2+等,因为它的代码与不同的资源相同)

public void setActivity(ImageView activityNum, int activity) {
     switch (activity) {
         case 1: 
             activityNum.setImageResource(R.drawable.hello);
             activityNum.setOnClickListener(Hello(View v));
             break;
         case 2: etc...
     }
}

这是播放我设置的声音的方法,因为它现在是xml代码,如果我有"机器人:的onClick ="你好" "这种方法工作正常,但我试图弄清楚如何设置以前的方法,而不仅仅是静态。我假设我需要将当前活动放在activity_wednesday,但是我不知道如何实现它。

public void Hello(View v) {
    player12 = MediaPlayer.create(this, R.raw.hello);
    player12.start();
}

3 个答案:

答案 0 :(得分:2)

这里的问题是你将onClick监听器设置为ImageView的方式是错误的。

setOnClickListener将在单击此视图时注册要调用的回调,并处理onClick以调用您的方法来播放媒体。

您需要更改以下代码。

 public void setActivity(ImageView activityNum, int activity) {
    switch (activity) {
        case 1:
            activityNum.setImageResource(R.drawable.hello);
            activityNum.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    // handle the click here
                    Hello(v);
                }
            });
            break;
        case 2: etc...
    }
}

答案 1 :(得分:1)

你可以这样做

public void setActivity(ImageView activityNum, int activity) {
  switch (activity) {
    case 1:
        activityNum.setImageResource(R.drawable.hello);
        activityNum.setOnClickListener(this);

然后在Activity创建方法

public void onClick(View v)
{
    // some code
}

,您需要将implements OnClickListener()添加到Activity类定义中。实施例

public class MyActivity extends Activity implements OnClickListener()

这告诉它使用您的类定义中onClick()实现的OnClickListener方法。这将允许您以相同的方式在该方法中的任何需要调用此相同方法的View上进行设置,并将ImageView点击发送到onClick()函数{{ 1}}参数。

如果你想让它调用相同的方法,那么在View内你可以调用该方法

onClick()

答案 2 :(得分:0)

另一种我觉得它最好的方式:

在您的类中添加一个私有成员,如下所示:

private OnClickListner mOnClickListener = new OnClickListener(View view) {
};

public void setActivity(ImageView activityNum, int activity) {
   switch (activity) {
      case 1:
         activityNum.setImageResource(R.drawable.hello);
         activityNum.setOnClickListener(mOnClickListener);

对于此处写的其他解决方案,您应该注意:

  1. 如果你实现onclicklistener内联代码,你可能会在需要监听器的地方制作一些重复的代码;
  2. 如果您的活动实现了onclicklistener,那么您可以将其作为onclicklistener在外部显示。因此,即使是在您的活动之外,其他所有人都可以将点击次数发送到您的活动