AndroidStudio - 学习笔记(JetPack) Day 3 - 霜冷的秘密基地

AndroidStudio - 学习笔记(JetPack) Day 3

程序设计 0 评

前言:本文记录学习安卓开发笔记,用于快速查找功能 - [Day 3]

Navigation导航

概述
Android JetPack的组件之一,用于不同碎片(Fragment)之间的导航切换

功能
Navigation 组件旨在用于具有一个主 Activity 和多个 Fragment 目的地的应用。主 Activity 与导航图相关联,且包含一个负责根据需要交换目的地的 NavHostFragment

在具有多个 Activity 目的地的应用中,每个 Activity 均拥有其自己的导航图。

食用

[fragment]
碎片页面的创建:layout -> New -> fragment -> Fragment(Blank),创建一个空白的fragment模板,会生成两个文件一个activity和一个layout
fragment_one.png

[My Nav Graph]
我的导航图:创建一个Navigation导航图,用于页面切换导航管理,res -> Android Resouces File
建立后会导入一些依赖,等待片刻即可

MyNavGraph.png

MyNavGraph_two.png

等待即可... wtm@!!!@$%&^9@^(*^$, 一直loading...

graph_loading.png

建立联系
navigation_nav.png

MyNavGraph_two.png

[MainActivity]
在主活动中设置启动页面,
MainActivity_nav.png

[代码部分]

  • HomeFragment.java
package com.example.navigationdemo;

import android.os.Bundle;

import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.navigation.NavController;
import androidx.navigation.Navigation;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;

/**
 * A simple {@link Fragment} subclass.
 */
public class HomeFragment extends Fragment {

    public HomeFragment () {

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_home, container, false);
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        Button button = getView().findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                NavController controller = Navigation.findNavController(view);
                controller.navigate(R.id.action_homeFragment_to_betalFragment);
            }
        });
    }
}
  • BetalFragment.java
package com.example.navigationdemo;

import android.os.Bundle;

import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.navigation.Navigation;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

/**
 * A simple {@link Fragment} subclass.
 */
public class BetalFragment extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_betal, container, false);
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        //功能与HomeFragment中一样,紧凑型写法
        getView().findViewById(R.id.button2).setOnClickListener(Navigation.createNavigateOnClickListener(R.id.action_betalFragment_to_homeFragment));
    }
}
  • MainActivity.java
package com.example.navigationdemo;

import androidx.appcompat.app.AppCompatActivity;
import androidx.navigation.NavController;
import androidx.navigation.Navigation;
import androidx.navigation.ui.NavigationUI;

import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        //取得controller
        NavController navController = Navigation.findNavController(this, R.id.fragmentContainerView);
        NavigationUI.setupActionBarWithNavController(this, navController);

    }

    @Override
    public boolean onSupportNavigateUp() {
        //return super.onSupportNavigateUp();
        //设置左上角返回按钮
        NavController controller = Navigation.findNavController(this, R.id.fragmentContainerView);
        return controller.navigateUp();
        
    }
}

[修改页面标签]
在页面导航中修改页面lable即可
myNavGraph_lable.png

AndroidStudio - 学习笔记(JetPack) Day 4
快来做第一个评论的人吧~
0:00