Могу ли я открывать фрагменты из прослушивателей щелчков нижней панели? - PullRequest
0 голосов
/ 14 июля 2020

Я создал нижнюю панель с файлом xml следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<tabs>
    <tab
        id="@+id/tab_signals"
        icon="@drawable/ic_recents"
        title="Signals"
        barColorWhenSelected="@color/colorAccent" />
    <tab
        id="@+id/tab_tutorials"
        icon="@drawable/ic_favorites"
        title="Tutorials"
        barColorWhenSelected="#5D4037" />
    <tab
        id="@+id/tab_training"
        icon="@drawable/ic_nearby"
        title="Training"
        barColorWhenSelected="#7B1FA2" />
    <tab
        id="@+id/tab_management"
        icon="@drawable/ic_friends"
        title="Management"
        barColorWhenSelected="#FF5252" />
    <tab
        id="@+id/tab_pool"
        icon="@drawable/ic_restaurants"
        title="Pool"
        barColorWhenSelected="#FF9800" />
    <tab
        id="@+id/tab_contact"
        icon="@drawable/ic_restaurants"
        title="Contact"
        barColorWhenSelected="#FF9800" />
</tabs>

И мой activity_main. xml выглядит следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <TextView
        android:id="@+id/messageView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@+id/bottomBar"
        android:gravity="center"
        android:text="Hi mom!" />

    <com.roughike.bottombar.BottomBar
        android:id="@+id/bottomBar"
        android:layout_width="match_parent"
        android:layout_height="64dp"
        android:layout_alignParentBottom="true"
        app:bb_tabXmlResource="@xml/bottombar_tabs_color_changing"
        app:bb_behavior="shifting|underNavbar" />

</RelativeLayout>

MainActivity.class следующим образом :

public class MainActivity extends AppCompatActivity {
    private TextView messageView;


    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        messageView = (TextView) findViewById(R.id.messageView);

        BottomBar bottomBar = (BottomBar) findViewById(R.id.bottomBar);
        bottomBar.setOnTabSelectListener(new OnTabSelectListener() {
            @Override
            public void onTabSelected(@IdRes int tabId) {
                messageView.setText(TabClicks.get(tabId, false));
            }
        });

        bottomBar.setOnTabReselectListener(new OnTabReselectListener() {
            @Override
            public void onTabReSelected(@IdRes int tabId) {
                Toast.makeText(getApplicationContext(), TabClicks.get(tabId, true), Toast.LENGTH_LONG).show();
            }
        });
    }

    
}

И еще один TabClicks. java, который имеет следующие прослушиватели щелчков:

package com.example.bottombar.sample;

public class TabClicks {
    public static String get(int menuItemId, boolean isReselection) {
        String message = "Content for ";

        switch (menuItemId) {
            case R.id.tab_signals:
                message += "signals";
                break;
            case R.id.tab_tutorials:
                message += "tutorials";
                break;
            case R.id.tab_training:
                message += "training";
                break;
            case R.id.tab_management:
                message += "management";
                break;
            case R.id.tab_pool:
                message += "pool";
                break;
            case R.id.tab_contact:
                message += "contact";
                break;
        }

        if (isReselection) {
            message += " WAS RESELECTED! YAY!";
        }

        return message;
    }
}

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

1 Ответ

0 голосов
/ 14 июля 2020

вы можете использовать это, чтобы открывать / заменять фрагменты

Fragment someFragment = new SomeFragment(); 
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_container, someFragment ); // give your fragment container id in first parameter
transaction.addToBackStack(null);  // if written, this transaction will be added to backstack
transaction.commit(); 

Однако, согласно рекомендациям по дизайну материалов, нижняя панель навигации должна содержать 3-5 элементов. У вас их 6, и я бы посоветовал вам использовать панель навигации.

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

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