好吧,我试图设置动态按钮,我已经通过开关设置了动态成像,我试图弄清楚我需要放入什么(查看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();
}
答案 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);
对于此处写的其他解决方案,您应该注意: