iT邦幫忙

2022 iThome 鐵人賽

DAY 5
0

開頭

先來從 App 的畫面開始吧,這次鐵人賽的 App 會有兩個畫面,一個是設定頁,另一個是筆記頁,所以先把這兩個頁面建立好

檔案建立

建立 Navigation 資料夾

  1. res 資料夾右鍵
  2. New 左鍵
  3. Android Resource Directory 左鍵

https://ithelp.ithome.com.tw/upload/images/20220919/20124384WO1suZwJSQ.png

  1. Resource type 選擇 navigation
  2. OK 左鍵

https://ithelp.ithome.com.tw/upload/images/20220919/20124384zzHwGMAJfP.png

建立 Navigation XML

  1. navigation 資料夾 右鍵
  2. new
  3. Navigation Resource File 左鍵

https://ithelp.ithome.com.tw/upload/images/20220919/20124384qqIpSyVOzJ.png

  1. 建立 main_navigation 檔案

https://ithelp.ithome.com.tw/upload/images/20220919/20124384LeeF71yMSj.png

  1. 可能會跳視窗出來,點 OK 就好
  2. 等他跑完

https://ithelp.ithome.com.tw/upload/images/20220919/201243843wCwujbyLA.png

頁面建立

操作

  1. 點圖中的按鈕
  2. Create new destination 左鍵

https://ithelp.ithome.com.tw/upload/images/20220919/20124384mfMGLquwS1.png

  1. 選左上的 Fragment(Blank)
  2. Next 左鍵

https://ithelp.ithome.com.tw/upload/images/20220919/20124384QJFTBmJdXO.png

  1. 第一個頁面是筆記頁面,所以在最上面的輸入框輸入名稱 noteFragment,中間和下面不用改,他會自己變動
  2. Finish 左鍵

https://ithelp.ithome.com.tw/upload/images/20220919/20124384LHpX1zwQCh.png

  1. 等他跑完就會看到第一個頁面建立完成

https://ithelp.ithome.com.tw/upload/images/20220919/20124384IO4wSvuKCB.png

  1. 重覆上面的動作,再做一個 settingFragment 來當設定頁

https://ithelp.ithome.com.tw/upload/images/20220919/20124384EZRW3fE0eu.png

Activity 顯示

activity_main.xml貼上

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <androidx.fragment.app.FragmentContainerView
        android:id="@+id/amMainNavigation"
        android:name="androidx.navigation.fragment.NavHostFragment"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:defaultNavHost="true"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:navGraph="@navigation/main_navigation" />
</androidx.constraintlayout.widget.ConstraintLayout>

跳轉頁面

  1. noteFragment 拉箭頭到 settingFragment

https://ithelp.ithome.com.tw/upload/images/20220919/20124384CrvgSBY8Ft.png

  1. 打開 main_navigation.xml 的程式碼頁面,把<action的 id 找出來

https://ithelp.ithome.com.tw/upload/images/20220919/20124384qBvbRR81tj.png

  1. 點擊事件(這個先筆記起來,之後會用到)
setOnClickListener {
    findNavController().navigate(R.id.action_noteFragment_to_settingFragment)
}

傳值和接值

這個也是先筆記起來,之後會用到

傳值

  1. main_navigation.xml 增加 Argument
<fragment
    android:id="@+id/Fragment">
    <argument
        android:name="你的Key"
        app:argType="資料形態" />
</fragment>
  1. findNavController直接寫入
findNavController().navigate(你的FragmentDirections.actionFragmentToFragment(你的值))

接值

  1. 目的 Fragment 建立 args 變數
private val args: 你的FragmentArgs by navArgs()
  1. 直接用 args 就好
args.你的Key

上一篇
111/04 - 安裝套件(1/1)
下一篇
111/06 - 畫面(2/2) - ConstraintLayout
系列文
聽說 HackMD 開放 API 串接,那麼用 Kotlin 寫個筆記 App 吧!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言