1

Я реализовал функцию setOnClickListener() в функции MainActivity и работает без каких-либо проблем.Поведение «Floating Action Button» в соответствии с текущим фрагментом

У меня есть 8 различных фрагментов (один показывает WebView, anoother загружает RecyclerView и т. Д.) На основе выбора из навигационного ящика.

Появляется FAB, и его текущее действие воспроизводит песню по умолчанию, которая работает нормально.

Теперь, из моих 8 различных фрагментов, 3 фрагмента показывают другой список композиций.
Поскольку FAB отображается по умолчанию, я хочу использовать FAB в качестве кнопки воспроизведения.

Итак, если пользователь находится в одном фрагменте и выбирает mp3 и нажимает на FAB, он должен воспроизводить эту песню.
Это означает, что я должен как-то перезаписать setOnClickListener от MainActivitiy с помощью одного, реализованного в Фрагменте.

Таким же образом у меня есть другие 2 фрагмента, которые показывают список песен в mp3. Выбрав mp3 в этом и нажав FAB, фрагмент должен прослушать это действие FAB.

В принципе, FAB должен отменить свое действие и принимать входные данные от текущего фрагмента.

Один способ, о котором я могу думать, это когда вызывается fab.setOnClickListener, я проверю текущий фрагмент и действую согласно этому.

Но проблема в том, чтобы воспроизвести эту песню, я создаю Intent со многими параметрами и вызывает startervice.

Если я могу что-то сделать в самом фрагменте, я могу создать Intent, расслоить необходимые аргументы и т. Д. На setOnClickListener().

Любые предложения по разрешению моих замешательств очень ценятся.

+0

Поместите свое решение в качестве ответа, а не в вопрос. –

ответ

0

Я пробовал ниже, и он работает нормально. Добавьте его в качестве ответа на мой вопрос, так как он работает.

подход:

Реализована функция с общим названием playAudio() во всех фрагментах, где средства массовой информации предполагают, чтобы играть. В MainActivity, onClick() плавающей кнопки действия, я проверяю экземпляр текущего фрагмента. Если он входит в число 3 из 8, которые должны воспроизводить соответствующий звук при нажатии кнопки, я вызываю playAudio() фрагмента. для остальной части фрагментов, делая что-то еще. Ниже код надрез:

@Override 
    onClick(View v) { 
    Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.container_body); 
       if (fragment != null && fragment.isMenuVisible()) { 
        if (fragment instanceof FragmentAudioMessage) { 
         ((FragmentAudioMessage) fragment).initPlay(); 
        } else { 
         //do something else. 
        } 
       } 

Таким образом, она работает по-разному для каждого фрагмента.

Надеюсь, это поможет другим.

Смежные вопросы