android 片段间切换

uidvcgyl  于 2023-02-20  发布在  Android
关注(0)|答案(3)|浏览(137)

我已经实现了一个BottomNavigationView,它允许用户在片段之间切换。但是现在我想在程序中使用另一个按钮手动触发它。这个按钮位于一个小吃栏中。(见代码)

Snackbar.make(BLEFragment.this.getView(),"BLE IS NOT ENABLE ! \n go to the settings-tab,...",Snackbar.LENGTH_SHORT)
        .setBackgroundTint(Color.rgb(244, 78, 63))
        .setTextColor(Color.rgb(255,255,255))
        .setAction("Settigs", new View.OnClickListener() {
            @Override
            public void onClick(View view) {

            }
        })
        .show();

也许你能帮我。
如果我把问题表达得不对,我想道歉,我不知道如何表达。
非常感谢。
拉姆绍尔·勒内

hkmswyz6

hkmswyz61#

Snackbar是Android支持设计库中的一个控件,可以在屏幕底部快速弹出消息。
make(视图视图,字符序列文本,整数持续时间)
您可以检查参数和相应的API

bksxznpy

bksxznpy2#

**bottomNavigationView.getMenu()**将解决您的问题。请尝试以下操作

Snackbar.make(BLEFragment.this.getView(),"BLE IS NOT ENABLE ! \n go to the settings-tab,...",Snackbar.LENGTH_SHORT)
            .setBackgroundTint(Color.rgb(244, 78, 63))
            .setTextColor(Color.rgb(255,255,255))
            .setAction("Settigs", new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                 //Move to next fragment
                    switchFragment(R.id.more_setting);
                }
            })
            .show();


public void switchFragment(int idd) {
        Menu menu = bottomNavigationView.getMenu();
        for (int i = 0, size = menu.size(); i < size; i++) {
            MenuItem item = menu.getItem(i);
            if(item.getItemId() == idd){
                item.setChecked(true);
                getSupportFragmentManager().beginTransaction().replace(R.id.container, new ProgramFragment()).commit();
            }

        }
    }
zujrkrfu

zujrkrfu3#

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/galaxyContainer">
</FrameLayout>
<androidx.coordinatorlayout.widget.CoordinatorLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <com.google.android.material.bottomappbar.BottomAppBar
        android:id="@+id/galaxyBottomBar"
        android:layout_margin="20dp"
        android:paddingVertical="6dp"
        app:fabCradleMargin="8dp"
        app:fabCradleRoundedCornerRadius="30dp"
        app:fabAnchorMode="cradle"
        app:fabAlignmentMode="center"
        app:elevation="10dp"
        app:addElevationShadow="true"
        app:fabAnimationMode="slide"
        app:fabCradleVerticalOffset="0dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginEnd="18dp"
            android:orientation="horizontal"
            android:weightSum="2">
            <com.google.android.material.button.MaterialButton
                android:id="@+id/galaxyExploreButton"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:drawableTop="@drawable/galaxy_btn_explore"
                android:background="@android:color/transparent"
                android:text="Explore"
                android:textColor="@drawable/galaxy_tab_text"
                android:layout_weight="1"/>
            <com.google.android.material.button.MaterialButton
                android:id="@+id/galaxyGalleryButton"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:drawableTop="@drawable/galaxy_btn_gallery"
                android:background="@android:color/transparent"
                android:text="Gallery"
                android:textColor="@drawable/galaxy_tab_text"
                android:layout_weight="1"/>
        </LinearLayout>
    </com.google.android.material.bottomappbar.BottomAppBar>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

下面是我的java代码

public void switchTab(boolean isExplore) {
    exploreButton.setSelected(isExplore);
    galleryButton.setSelected(!isExplore);
    FragmentTransaction ft = `enter code here`getSupportFragmentManager().beginTransaction();
    ft.replace(R.id.galaxyContainer, isExplore ? new ExploreFragment() : new GalleryFragment());
    ft.commit();
}


@Override
public void onClick(View v) {
   switchTab(v.getId() == R.id.galaxyExploreButton);
}

希望这个能帮上忙。

相关问题