Проблема SendBroadcast внутри onCickllistener - PullRequest
0 голосов
/ 19 января 2012
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 ]

3 голосов
/ 19 января 2012

Должен быть context.sendBroadcast (Intent).Вы можете сделать CurrentActivity.this.sendBroadcast (Intent) Внутри OnClickListener нет экземпляра контекста, поэтому он не может выполнить метод Context

2 голосов
/ 19 января 2012

Вы создали OnClickListener как анонимный класс. Внутри этого анонимного экземпляра вы пытаетесь вызвать sendBroadcast(), а компилятор пытается найти такой метод в OnClickListener, но такого метода нет. Вам нужно сослаться на класс включения, а именно Activity, выполнив ThisActivity.this.sendBroadcast(intent), где ThisActivity - это фактическое имя вашего Activity.

1 голос
/ 19 января 2012

sendBroadcast может быть сделано только в контексте Activity, BroadcastReceiver или Service, но вы пытаетесь sendBroadcast в onClick, что не является ни одним из ранее упомянутых контекстов.

Самое простое, что можно сделать:

CurrentActivity.this.sendBroadcast(Message1);

Другой вариант - создать переменную класса Context context, а затем в onCreate (если это действие или служба) поставитьcontext = this, а затем выполните context.sendBroadcast(Message1);.Или, если это в BroadcastReceiver, просто сделайте context.sendBroadcast(Message);

0 голосов
/ 06 февраля 2019

во фрагментах

Intent signalIntent = new Intent("updateBTN");
signalIntent.putExtra("key", "value");
getActivity().sendBroadcast(signalIntent);
...