0

下部のナビゲーション バーを持つ Android アプリを作成しました。私は大雑把な下部ナビゲーション バーを使用しており、各アイテムのインテントを渡しています。各アクティビティで、再び下部バーを作成しました。しかし、問題は、新しいアクティビティが作成されている間に、選択されたデフォルトのアイテムがリセットされることです。私を助けてください。

4

1 に答える 1

0

代わりにフラグメントを使用し、ボトムバーをアクティビティに配置し、それによって処理されるフレームレイアウトを配置する必要があります。

次のコードを使用して、そのようなことを実現できます。

MainActivity.xml

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

    <com.roughike.bottombar.BottomBar
        android:id="@+id/bottomBar"
        android:layout_width="match_parent"
        android:layout_alignParentBottom="true"
        app:bb_tabXmlResource="@xml/bottombar_tabs"
        android:layout_height="60dp"
        app:bb_inActiveTabColor="@color/inActiveTabColor"
        app:bb_inActiveTabAlpha="0.8"
        app:bb_activeTabAlpha="1"
        app:bb_showShadow="false"/>

    <FrameLayout
        android:id="@+id/fragment_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/imageview_logo"
        android:layout_above="@id/bottomBar"
        android:layout_alignParentStart="true">
    </FrameLayout>
</RelativeLayout>

MainActivity.java

in your onCreate method(), do the following.


    bottomBar = (BottomBar) findViewById(R.id.bottomBar);
    bottomBar.selectTabAtPosition(FIRST_FRAGMENT_INDEX); //Default: FIRST
    bottomBar.setOnTabSelectListener(new OnTabSelectListener() {

        private int last_index = FIRST_FRAGMENT_INDEX;

        @Override
        public void onTabSelected(@IdRes int tabId) {

            //Creating the Fragment transaction
            FragmentTransaction transaction = fragmentManager.beginTransaction();

            switch (tabId) {
                case R.id.tab_SECOND:
                    if (SECOND_FRAGMENT_INDEX > last_index) {
                        FragmentArrayList.get(SECOND_FRAGMENT_INDEX).setEnterTransition(new Slide(Gravity.RIGHT));
                        //transaction.setCustomAnimations(R.animator.slide_from_right, R.animator.slide_to_left);
                    } else if (SECOND_FRAGMENT_INDEX < last_index) {
                        FragmentArrayList.get(SECOND_FRAGMENT_INDEX).setEnterTransition(new Slide(Gravity.LEFT));
                        //transaction.setCustomAnimations(R.animator.slide_from_left, R.animator.slide_to_right);
                    }
                    transaction.replace(R.id.fragment_container, FragmentArrayList.get(SECOND_FRAGMENT_INDEX));
                    last_index = SECOND_FRAGMENT_INDEX;
                    break;

                case R.id.tab_FIRST:
                    if (FIRST_FRAGMENT_INDEX > last_index) {
                        FragmentArrayList.get(FIRST_FRAGMENT_INDEX).setEnterTransition(new Slide(Gravity.RIGHT));
                        //transaction.setCustomAnimations(R.animator.slide_from_right, R.animator.slide_to_left);
                    } else if (FIRST_FRAGMENT_INDEX < last_index) {
                        FragmentArrayList.get(FIRST_FRAGMENT_INDEX).setEnterTransition(new Slide(Gravity.LEFT));
                        //transaction.setCustomAnimations(R.animator.slide_from_left, R.animator.slide_to_right);
                    }
                    transaction.replace(R.id.fragment_container, FragmentArrayList.get(FIRST_FRAGMENT_INDEX));
                    last_index = FIRST_FRAGMENT_INDEX;
                    break;

                case R.id.tab_THIRD:
                    if (THIRD_FRAGMENT_INDEX > last_index) {
                        FragmentArrayList.get(THIRD_FRAGMENT_INDEX).setEnterTransition(new Slide(Gravity.RIGHT));
                        //transaction.setCustomAnimations(R.animator.slide_from_right, R.animator.slide_to_left);
                    } else if (THIRD_FRAGMENT_INDEX < last_index) {
                        FragmentArrayList.get(THIRD_FRAGMENT_INDEX).setEnterTransition(new Slide(Gravity.LEFT));
                        //transaction.setCustomAnimations(R.animator.slide_from_left, R.animator.slide_to_right);
                    }
                    transaction.replace(R.id.fragment_container, FragmentArrayList.get(THIRD_FRAGMENT_INDEX));
                    last_index = THIRD_FRAGMENT_INDEX;
                    break;

                case R.id.tab_FOURTH:
                    if (FOURTH_FRAGMENT_INDEX > last_index) {
                        FragmentArrayList.get(FOURTH_FRAGMENT_INDEX).setEnterTransition(new Slide(Gravity.RIGHT));
                        //transaction.setCustomAnimations(R.animator.slide_from_right, R.animator.slide_to_left);
                    } else if (FOURTH_FRAGMENT_INDEX < last_index) {
                        FragmentArrayList.get(FOURTH_FRAGMENT_INDEX).setEnterTransition(new Slide(Gravity.LEFT));
                        //transaction.setCustomAnimations(R.animator.slide_from_left, R.animator.slide_to_right);
                    }
                    transaction.replace(R.id.fragment_container, FragmentArrayList.get(FOURTH_FRAGMENT_INDEX));
                    last_index = FOURTH_FRAGMENT_INDEX;
                    break;
            }
            transaction.commit();
        }

    });
于 2017-03-24T10:49:00.890 に答える