gpt4 book ai didi

android - 在 BottomNavigationView 中的 fragment 之间导航的正确方法是什么?

转载 作者:行者123 更新时间:2023-11-29 23:49:37 26 4
gpt4 key购买 nike

问题简而言之:

我有一个 MainActivity,上面有 BottomNavigationViewFrameLayoutBottomNavigationView 有 5 个选项卡,单击选项卡时,我会在 FrameLayout 上添加一些 fragment 。但是,从某个 fragment ,我需要打开另一个 fragment 。从另一个 fragment ,我需要打开另一个 fragment 。每次我需要显示 fragment 时,我都会从 fragment 中通知 MainActivity,它需要添加另一个 fragment 。每个 fragment 检查是否执行其 Activity 实现接口(interface)。这很烦人。所以,如果我有 100 个 fragment ,MainActivity 会实现太多接口(interface)。它导致样板代码。那么,如果您有很多 fragment ,如何在 fragment 之间正确导航?

问题详情:

请先阅读简短部分的问题。

正如我所说,我有一个包含 5 个选项卡的 BottomNavigationView。我们将负责每个选项卡的 fragment 称为 FragmentAFragmentBFragmentCFragmentDFragmentE 。我真的知道,单击选项卡时如何显示这些 fragment 。我只是在 Activity 中替换/添加这些 fragment 。但是,等等,如果您想从 FragmentA 转到 FragmentF 怎么办?然后从FragmentFFragmentG?这就是我处理这个问题的方式:从 FragmentFFragmentG 我通知 MainActivity 我想更改 fragment 。但是它们如何与 MainActivity 通信呢?为此,我在每个 fragment 中都有接口(interface)。 MainActivity 实现这些接口(interface)。这是问题。 MainActivity 实现了太多导致样板代码的接口(interface)。那么,浏览 fragment 的最佳方式是什么?我什至不碰我还需要处理后退按钮按下:)

我的代码如下所示:

MainActivity 实现接口(interface)以在必要时更改 fragment :

class MainActivity : AppCompatActivity(), DashboardFragment.OnFragmentInteractionListener,
PaymentFragment.BigCategoryChosenListener, PaymentSubcategoryFragment.ItemClickedListener, PayServiceFragment.OnPayServiceListener, ContactListFragment.ContactTapListener, P2PFragment.P2PNotifier

例如,这是我的 PaymentFragment 的 onAttach 方法:

@Override
public void onAttach(Context context) {
super.onAttach(context);
if (context instanceof BigCategoryChosenListener) {
listener = (BigCategoryChosenListener) context;
} else {
throw new RuntimeException(context.toString()
+ " must implement BigCategoryChosenListener");
}
}

并使用此监听器 我通知 Activity 更改 fragment 。我应该在每个 fragment 中这样做。我认为这不是最佳做法。那么,可以吗还是有更好的方法?

最佳答案

好的,您需要在 Activity 中像这样在 BottomNavigationView 上进行初始化。

bottomNavigationView.setOnNavigationItemSelectedListener(
new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {

case R.id.menu_1://Handle menu click -
//Call Navigator helper to replace Fragment to Fragment A
break;
case R.id.menu_2:
//Call Navigator helper to replace Fragment to Fragment B
break;

case R.id.menu_3:
//Call Navigator helper to replace Fragment to Fragment C
break;
}
return true;
}

});

关于android - 在 BottomNavigationView 中的 fragment 之间导航的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51038740/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com