Navigation 组件使用入门

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
image-20210301095107291
image-20210301100618863

Navigation 三大件

image

创建NavHostFragment

image-20210301100908271

获取到NavController

image-20210301101957468

fragment之间跳转使用

image-20210301103659105
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);
            }
        });
    }


}
image-20210301104525233

BottomNavigationView 使用

image-20210301122529623

添加menu配置

image-20210301122622144


    

    

    
    
    

image-20210301123152229

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


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

image-20210301150229724
image-20210301150259622

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

你可能感兴趣的:(Navigation 组件使用入门)