0
点赞
收藏
分享

微信扫一扫

Navigation 组件使用入门

菜菜捞捞 2021-09-19 阅读 54
jetpack

Navigation 组件使用入门

如需在您的项目中添加 Navigation 支持,请向应用的 build.gradle 文件添加以下依赖项:

def nav_version = "2.3.0"

// Java language implementation
implementation "androidx.navigation:navigation-fragment:$nav_version"
implementation "androidx.navigation:navigation-ui:$nav_version"

创建导航图

如需向项目添加导航图,请执行以下操作:

  1. 在“Project”窗口中,右键点击 res 目录,然后依次选择 New > Android Resource File。此时系统会显示 New Resource File 对话框。
  2. File name 字段中输入名称,例如“nav_graph”。
  3. Resource type 下拉列表中选择 Navigation,然后点击 OK

Navigation 三大件

创建NavHostFragment

获取到NavController

fragment之间跳转使用

public class AFragment extends Fragment {
    Button button;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater,
                             @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_a, container, false);
    }

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        button = view.findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Bundle bundle = new Bundle();
                bundle.putString("name", "from AFragment bundle");
                Navigation.findNavController(getView()).navigate(R.id.action_afragment_to_bfragment, bundle);
            }
        });
    }


}


BottomNavigationView 使用

添加menu配置

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/afragment"
        android:icon="@mipmap/index"
        android:title="首页"></item>

    <item
        android:id="@+id/bfragment"
        android:icon="@mipmap/cate"
        android:title="分类"
        />

    <item
        android:id="@+id/cfragment"
        android:icon="@mipmap/cart"
        android:title="购物车" />
    <item
        android:id="@+id/dfragment"
        android:icon="@mipmap/me"
        android:title="我的" />
    <item
        android:id="@+id/efragment"
        android:icon="@mipmap/me"
        android:title="圈子" />
</menu>

使用NavigationUI类 来对AppBar和navController进行绑定,这样点击BottomNavigationView配置的menu item 会自动使用 item android:id="@+id/afragment" 进行fragment跳转


BottomNavigationView需要使用业务逻辑实现跳转,非默认使用NavigationUI,代码实现setOnNavigationItemSelectedListener

在navigation导航配置中,直接使用action来配置进入的fragment

举报

相关推荐

0 条评论