Как отправить трансляцию в классайзер по утилизации? - PullRequest
0 голосов
/ 27 февраля 2019

У меня есть RecyclerView , который отображает все песни, найденные на устройстве.

Класс адаптера

holder.constraintLayout.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //Store songList and songIndex in mSharedPreferences
            storageUtil.storeSong(Main.musicList);
            storageUtil.storeSongIndex(holder.getAdapterPosition());

            //Send media with BroadcastReceiver
            Intent broadCastReceiverIntent = new Intent(Constants.ACTIONS.BROADCAST_PlAY_NEW_SONG);
            sendBroadcast(broadCastReceiverIntent);

            Intent broadCastReceiverIntentUpdateSong = new Intent(Constants.ACTIONS.BROADCAST_UPDATE_SONG);
            sendBroadcast(broadCastReceiverIntentUpdateSong);
        }
    });

Чего я хочу достичьзаключается в том, что при нажатии на песню в RecyclerView a Broadcast отправляется на мой класс обслуживания , поэтому воспроизведение песни начинается.

sendBroadcast не можетбыть решенным, так как я могу отправить намерение широковещания от моего класса адаптера?

Я также хотел бы знать, если это правильный способ сделать это или есть лучший способ отправить широковещание вадаптер, потому что я читаю где-то BroadcastReceivers не принадлежат к классу адаптера.

1 Ответ

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

Основная причина: sendBroadcast - это метод класса Context, потому что вы вызываете его в Adapter классе, поэтому компилятор показывает ошибку "sendBroadcast не может быть решена".

Решение: Получить контекст из экземпляра представления, затем вызвать метод sendBroadcast.

holder.constraintLayout.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        //Store songList and songIndex in mSharedPreferences
        storageUtil.storeSong(Main.musicList);
        storageUtil.storeSongIndex(holder.getAdapterPosition());

        // Obtain context from view instance.
        Context context = v.getContext();

        //Send media with BroadcastReceiver
        Intent broadCastReceiverIntent = new Intent(Constants.ACTIONS.BROADCAST_PlAY_NEW_SONG);
        context.sendBroadcast(broadCastReceiverIntent);

        Intent broadCastReceiverIntentUpdateSong = new Intent(Constants.ACTIONS.BROADCAST_UPDATE_SONG);
        context.sendBroadcast(broadCastReceiverIntentUpdateSong);
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...