在onCLickllistener中发送SendBroadcast问题

时间:2012-01-19 15:44:34

标签: android broadcast clicklistener

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中未定义广播方法。那是为什么?

4 个答案:

答案 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只能在ActivityBroadcastReceiverService上下文中完成,但您在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);