当前位置: 首页 > 知识库问答 >
问题:

org.greenrobot.eventbus.它的超级类没有带有@Subcribe注释的公共方法

盖嘉珍
2023-03-14

我正在使用EventBus来控制mediaplayer的状态,但是我在执行过程中遇到了一个错误。

原因:org.greenrobot.eventbus.事件总线异常:订阅者类maa. Mainactive及其超类没有带有@Subcribe注释的公共方法

 @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);
    }

无线电经理。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个答案

云鸿祯
2023-03-14

我已经解决了这个问题,我的错误是

import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
 类似资料:
  • 我正在实现来传递和获取来自任何类或片段的数据,并且还订阅了一个方法来获取即时更改的数据...但是我收到了以下错误消息: 组织。绿色机器人。事件巴士。EventBusException:订阅者类java。Boolean及其超类没有带有@Subscribe注释的公共方法 我已经订阅了github在这里展示的方法 代码片段 我只发布了应用程序所需的代码,因为这里不需要其他代码 适配器 更新活动类 新错误

  • 我正在使用EventBus创建一个Android应用程序,用于向其他类发布异步广播,但在执行过程中遇到了一个错误。 LogCat显示以下内容: 为什么会这样?我做错什么了吗?

  • 有可能通过AOP(使用Spring aop、aspectj等)审核用@Service或@Repository注释的类的所有公共方法,或者我认为是类级别而不是方法级别的注释?我想有这样的东西:

  • 我创建了一个包含一些基本crud方法的CrudController。这很好用。当我想保护这个控制器时,我可以重写超类中的方法,这很好。然而,我不想仅仅为了安全而重写每个方法。为此,我想在类上使用@Secured或@PreAuthorize。 我使用的是Spring Boot 2.2.2(最新版本)。 示例Crud基类 实现类 预期行为 当一个类被注释为@PreAuthorize或@安全时,我希望所

  • 我需要处理从带有注释的类的公共方法中抛出的所有异常。我尝试使用Spring AOP。这是我的记录器: 是我的注释。 然后,我将注释添加到我的配置类中。 首先,我尝试注释一些引发异常的方法。它工作得很好,但是我如何才能使这种工作用于用注释注释的类中的所有公共方法呢?

  • 我有两节课 使用Spring AOP,我需要包装: 如果注释放在类级别上,则对使用注释的所有公共方法的所有调用 这是我的切入点 这适用于的公共方法,但是当我调用时,未包装如何包含父方法?