btn2=(Button) rowView.findViewById(R.id.button1);
btn2.setText("Find");
btn2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent Message1=new Intent();
Message1.setAction("map");
sendBroadcast(Message1);}
错误表明在oclicklistener中未定义广播方法。那是为什么?
答案 0 :(得分:3)
应该是context.sendBroadcast(Intent)。你可以做CurrentActivity.this.sendBroadcast(意图) 在OnClickListener内部没有上下文实例,这就是为什么它不能执行Context
的方法答案 1 :(得分:2)
您已创建OnClickListener
作为匿名类。在这个匿名实例中,你试图调用sendBroadcast()
并且编译器试图在OnClickListener
中找到这样的方法,但是没有这样的方法。您需要的是通过Activity
引用封闭类,即ThisActivity.this.sendBroadcast(intent)
,其中ThisActivity是Activity
的实际名称。
答案 2 :(得分:1)
sendBroadcast
只能在Activity
,BroadcastReceiver
或Service
上下文中完成,但您在sendBroadcast
中尝试onClick
},这不是前面提到的任何背景。
最简单的方法是:
CurrentActivity.this.sendBroadcast(Message1);
另一个选择是创建一个类变量Context context
,然后在onCreate
(如果它是一个活动或服务)中,放置context = this
,然后执行context.sendBroadcast(Message1);
。或者,如果它位于BroadcastReceiver
,请执行context.sendBroadcast(Message);
答案 3 :(得分:0)
在片段中
Intent signalIntent = new Intent("updateBTN");
signalIntent.putExtra("key", "value");
getActivity().sendBroadcast(signalIntent);