org.greenrobot.eventbus.EventBusException его суперклассы не имеют открытых методов с аннотацией @Subscribe - PullRequest
0 голосов
/ 09 мая 2019

Я использую EventBus для контроля состояния mediaplayer, но у меня возникает ошибка во время выполнения.

Вызывается: org.greenrobot.eventbus.EventBusException: класс подписчика maa.MainActivity и его суперклассы не имеют открытых методов с @ Подписаться аннотации

 @Override
    public void onStart() {
        super.onStart();
        EventBus.getDefault().register(this);
    }

    @Override
    public void onStop() {
        EventBus.getDefault().unregister(this);
        super.onStop();
    }

    @Override
    protected void onDestroy() {
        radioManager.unbind();
        super.onDestroy();
        if (radioManager.isPlaying()) {
            radioManager.playOrPause(getPreference(getApplicationContext()));
        } else {
            radioManager.playOrPause(getPreference(getApplicationContext()));
        }
    }

    @Override
    protected void onResume() {
        super.onResume();
        radioManager.bind();
    }

    @Subscribe
    public void onEvent(String status) {
        switch (status) {
            case PlaybackStatus.LOADING:
                progressloading.setVisibility(View.VISIBLE);
                trigger.setVisibility(View.GONE);
                break;
            case PlaybackStatus.ERROR:
                Toast.makeText(this, R.string.no_stream, Toast.LENGTH_SHORT).show();
                break;
        }
        if (status.equals(PlaybackStatus.PLAYING)) {
            trigger.setVisibility(View.VISIBLE);
            progressloading.setVisibility(View.GONE);

        }
        trigger.setImageResource(status.equals(PlaybackStatus.PLAYING)
                ? R.drawable.ic_pause_black
                : R.drawable.ic_play_arrow_black);
    }

RadioManager.java

public class RadioManager {

    @SuppressLint("StaticFieldLeak")
    private static RadioManager instance = null;
    private static RadioService service;
    private Context context;
    private boolean serviceBound;

    public RadioManager(Context context) {
        this.context = context;
        serviceBound = false;
    }

    public static RadioManager with(Context context) {
        if (instance == null)
            instance = new RadioManager(context);
        return instance;
    }

    public static RadioService getService() {
        return service;
    }

    public void playOrPause(String streamUrl) {
        service.playOrPause(streamUrl);
    }

    public boolean isPlaying() {
        if (service != null) {
            return service.isPlaying();
        }
        return false;
    }

    public int getCurrentPosition() {
        if (service != null) {
            return service.getCurrentPosition();
        }
        return 0;
    }

    public void bind() {

        Intent intent = new Intent(context, RadioService.class);
        context.bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE);
        if (service != null)
            EventBus.getDefault().post(service.getStatus());
    }

    public void unbind() {

        context.unbindService(serviceConnection);

    }

    private ServiceConnection serviceConnection = new ServiceConnection() {
        public void onServiceConnected(ComponentName className, IBinder binder) {
            RadioService.LocalBinder rl = (RadioService.LocalBinder) binder;
            service = rl.getService();
        }
        public void onServiceDisconnected(ComponentName arg0) {
            serviceBound = false;
        }
    };
}

1 Ответ

0 голосов
/ 09 мая 2019

Я решил эту проблему, моей ошибкой был импорт

import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...