为 Android 上的浮动按钮分配不同的操作
Assign different actions to a Floating Button on Android
我正在构建一个使用导航抽屉 Activity 的应用程序,它与 Google PlayStore 的旧版本一样具有左侧菜单:
如您所知,该设计与 FAB(FloatingActionButton)捆绑在一起:
现在,在左侧菜单中您会看到这三个片段:
我想知道,当我更改 Fragment
时,如何为 FAB 分配不同的操作?从 MainActivity
我看到有 k 但我不明白如何为它分配不同的功能,因为在更改片段时,相同的 FAB
仍然存在并执行相同的操作在这种情况下是吐司:
binding.appBarMain.fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this, "Home Fragmen Visualizado", Toast.LENGTH_SHORT).show();
}
});
想法是,如果有人可以解释或告诉我如何根据 Fragment
控制 FAB
动作。
当您创建新的导航抽屉 Activity 时,默认情况下在名为 app_bar_main.xml 的文件中 Fab 自带。
它的实现在 MainActivity 文件中。
您可以从这里更改实现,或者如果不需要 FAB,可以从这两个文件中删除代码。
此文件位于主文件之上Activity,这就是它在每个片段中显示的原因。
您可以获取由 NavHostFragment
托管的当前片段,然后决定您需要使用 fab 做什么。
binding.appBarMain.fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final NavHostFragment navHostFragment = (NavHostFragment) getSupportFragmentManager().findFragmentById(R.id.nav_host_fragment); // change `nav_host_fragment` according to yours
if (navHostFragment != null) {
Fragment currentFragment = navHostFragment.getChildFragmentManager().getFragments().get(0);
if (currentFragment instanceof HomeFragment) {
Toast.makeText(MainActivity.this, "Home Fragment", Toast.LENGTH_SHORT).show();
} else if (currentFragment instanceof SlideshowFragment) {
Toast.makeText(MainActivity.this, "Slideshow Fragment", Toast.LENGTH_SHORT).show();
} else if (currentFragment instanceof GalleryFragment) {
Toast.makeText(MainActivity.this, "Gallery Fragment", Toast.LENGTH_SHORT).show();
}
}
}
});
也可以去掉这个fab,在每个fragment(HomeFragment, GalleryFragment, & SlidshowFragment)中放一个fab,单独操作。
我正在构建一个使用导航抽屉 Activity 的应用程序,它与 Google PlayStore 的旧版本一样具有左侧菜单:
如您所知,该设计与 FAB(FloatingActionButton)捆绑在一起:
现在,在左侧菜单中您会看到这三个片段:
我想知道,当我更改 Fragment
时,如何为 FAB 分配不同的操作?从 MainActivity
我看到有 k 但我不明白如何为它分配不同的功能,因为在更改片段时,相同的 FAB
仍然存在并执行相同的操作在这种情况下是吐司:
binding.appBarMain.fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this, "Home Fragmen Visualizado", Toast.LENGTH_SHORT).show();
}
});
想法是,如果有人可以解释或告诉我如何根据 Fragment
控制 FAB
动作。
当您创建新的导航抽屉 Activity 时,默认情况下在名为 app_bar_main.xml 的文件中 Fab 自带。
它的实现在 MainActivity 文件中。
您可以从这里更改实现,或者如果不需要 FAB,可以从这两个文件中删除代码。
此文件位于主文件之上Activity,这就是它在每个片段中显示的原因。
您可以获取由 NavHostFragment
托管的当前片段,然后决定您需要使用 fab 做什么。
binding.appBarMain.fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final NavHostFragment navHostFragment = (NavHostFragment) getSupportFragmentManager().findFragmentById(R.id.nav_host_fragment); // change `nav_host_fragment` according to yours
if (navHostFragment != null) {
Fragment currentFragment = navHostFragment.getChildFragmentManager().getFragments().get(0);
if (currentFragment instanceof HomeFragment) {
Toast.makeText(MainActivity.this, "Home Fragment", Toast.LENGTH_SHORT).show();
} else if (currentFragment instanceof SlideshowFragment) {
Toast.makeText(MainActivity.this, "Slideshow Fragment", Toast.LENGTH_SHORT).show();
} else if (currentFragment instanceof GalleryFragment) {
Toast.makeText(MainActivity.this, "Gallery Fragment", Toast.LENGTH_SHORT).show();
}
}
}
});
也可以去掉这个fab,在每个fragment(HomeFragment, GalleryFragment, & SlidshowFragment)中放一个fab,单独操作。