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"
创建导航图
如需向项目添加导航图,请执行以下操作:
- 在“Project”窗口中,右键点击
res
目录,然后依次选择 New > Android Resource File。此时系统会显示 New Resource File 对话框。 - 在 File name 字段中输入名称,例如“nav_graph”。
- 从 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