Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
AndroidX Navigationを導入した話 / Introducing Android...
Search
Masatoshi Kubode
February 28, 2019
Programming
1.7k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AndroidX Navigationを導入した話 / Introducing AndroidX Navigation
Masatoshi Kubode
February 28, 2019
More Decks by Masatoshi Kubode
See All by Masatoshi Kubode
AIチャットの改善から見えた、良いAI体験とは / What Constitutes a Good AI Experience: Insights from Improving AI Chat
kubode
0
200
3リポジトリーを2ヶ月でモノレポ化した話 / How I turned 3 repositories into a monorepo in 2 months
kubode
0
280
ウォンテッドリーの「ココロオドル」モバイル開発 / Wantedly's "kokoro odoru" mobile development
kubode
2
1.4k
Firebase Dynamic Linksの代替手段を自作する / Create your own Firebase Dynamic Links alternative
kubode
0
750
技術を根付かせる / How to make technology take root
kubode
1
520
WantedlyでのKotlin Multiplatformの導入と課題 / Kotlin Multiplatform Implementation and Challenges at Wantedly
kubode
0
670
Google Play Consoleデベロッパー アカウントの確認 / Verifying your Play Console developer account
kubode
1
1.5k
Make your Android app into Multiplatform app
kubode
0
250
ウォンテッドリーにおけるモバイルアプリ開発 / iOSDC Japan 2024 Sponsor Session
kubode
1
1.6k
Other Decks in Programming
See All in Programming
『寄り添うラジオ』をAIで作る 体験価値から逆算した、会話しないUXと品質設計
theoriatec2024
3
180
[GoCon2026] When Goroutines Are Not Enough: Runtime Locality in High-Throughput Go
takehaya
6
2.2k
Java 27新機能 / Java 27 new features
kishida
2
130
大喜利で理解するLLM as a Judge / Understanding LLM-as-a-Judge through Ogiri
rockname
0
100
kubernetes コンポーネント開発入門 / 新卒N年目の勉強会&交流会!〜〇〇への誘い〜 #n_study
mazrean
0
230
AWS DevOps Agentで インシデント対応をAIに任せたい
honmarkhunt
7
2.9k
【高い買い物LT会】初任給で話題の国産フィジカルAIを買った話
akagami
PRO
0
150
LL言語やWebフレームワークのPostgreSQL対応 〜DBの機能がユーザーに届くまで〜
kentaroutakeda
1
150
Can LLMs Replicate 4 Years of Compose Migration? Exploring the boundaries of automation with 279 XML files from a real product
makun
0
140
20260914 AIエージェント時代のPlatform Engineering LLM基盤とプロダクトの責務境界線
kanfab1
6
1.8k
{ Android | Kotlin } Gradle Plugin in 2026
ryunen344
1
310
AIエージェント時代のコードレビューを設計する
nogu66
6
2.7k
Featured
See All Featured
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
450
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
460
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
Product Roadmaps are Hard
iamctodd
55
13k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
4
650
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
670
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
What's in a price? How to price your products and services
michaelherold
247
13k
Building Flexible Design Systems
yeseniaperezcruz
330
41k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
520
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4.8k
Discover your Explorer Soul
emna__ayadi
2
1.3k
Transcript
©2019 Wantedly, Inc. "OESPJE9/BWJHBUJPO Λಋೖͨ͠ QPUBUPUJQT ٱอग़խढ़ 2019/02/28
©2019 Wantedly, Inc. ٱอग़խढ़ 8BOUFEMZ ओʹ8BOUFEMZ7JTJUͷ"OESPJEΞϓϦΛ։ൃ͍ͯ͠·͢ɻ ઈࢍϦχϡʔΞϧதɻ QPUBUPUJQTճ࿈ଓग़தɻ ,PUMJO 1PLFNPO(P
ࣗݾհ 5XJUUFS !TXJ[@BSE (JU)VC !LVCPEF
©2019 Wantedly, Inc. "OESPJE9/BWJHBUJPOͱ ͳͥಋೖͨ͠ͷ͔ ࣮
ൃੜͨ͠ ·ͱΊ ͢͜ͱ
©2019 Wantedly, Inc. "OESPJE9/BWJHBUJPOͱ
©2019 Wantedly, Inc. w "OESPJE9ͷͻͱͭ w چ /BWJHBUJPO$PNQPOFOUT w ͦΖͦΖTUBCMF
ݱ࣌Ͱ3$ w TUBCMFʹͳΔͱਖ਼ࣜʹ"OESPJE9ʹͳͬͯഁյత มߋ͕͋Δ͔ AndroidX Navigationͱ
©2019 Wantedly, Inc. w (6*ͰͷભҠਤ w 9.-Ͱهड़Մ ػೳ
©2019 Wantedly, Inc. w ը໘Ҿ w 4BGF"SHTͰͷܕ҆શͳ 'SBHNFOU"SHTͷੜ w %FFQ-JOLରԠ
w 5SBOTJUJPO"OJNBUJPO w 4IBSFE&MFNFOU ػೳ
©2019 Wantedly, Inc. w BSHVNFOUͷΫϥεΛੜ͢Δ(SBEMF1MVHJO w ܕ҆શʹͳΔ w 'SBHNFOUOFX*OTUBODFͱ͔࡞Βͳͯ͘Α͍ w
/BWJHBUJPOΘͣ͜Ε͚ͩΛಋೖ͢Δέʔε SafeArgs apply plugin: "androidx.navigation.safeargs.kotlin"
©2019 Wantedly, Inc. ͳͥಋೖͨ͠ͷ͔
©2019 Wantedly, Inc. w ΦϯϘʔσΟϯάΛϦχϡʔΞϧ w "DUJWJUZͰϑϩʔΛཧ w ෳͷը໘'SBHNFOUͰ࡞Δ ͳͥಋೖͨ͠ͷ͔
©2019 Wantedly, Inc. OnboardingActivity ϑϩʔͷߏ InitialFragment WelcomeFragment SelectOccupationFragment MainActivity
©2019 Wantedly, Inc. w ݅ذ͕ ͋Δ w ύϥϝʔλʔ ͷड͚͠ w
جຊతʹ Ұํ௨ߦ ࣮ࡍͷϑϩʔ
©2019 Wantedly, Inc. w ΞϓϦશମͷϦχϡʔΞϧΛਐΊ͍ͯΔ w .VMUJNPEVMFԽ͍ͯ͠Δ w 'FBUVSFؒͷը໘ભҠΛͲ͏͢Δ͔ w
ˠ%SPJE,BJHJͷ࣮͕ࢀߟʹͳΓͦ͏ w ˠ/BWJHBUJPOΛࢼ͍ͨ͠ ଞͷಋೖཧ༝
ϖʔδλΠτϧ ϖʔδαϒλΠτϧ ©2019 Wantedly, Inc. /BWJHBUJPOΔͧ
©2019 Wantedly, Inc. ࣮
©2019 Wantedly, Inc. ۭͷ'SBHNFOUΫϥεΛͯ͢࡞Δ SFTOBWJHBUJPOOBWJHBUJPOYNMΛ࡞Δ (6*Ͱը໘Λஔ
"DUJWJUZʹ/BW)PTU'SBHNFOUΛஔ 'SBHNFOUͰ/BW$POUSPMMFSOBWJHBUFΛॻ͘ ࣮ͷྲྀΕ
©2019 Wantedly, Inc. ը໘ͷஔ
©2019 Wantedly, Inc. ભҠΛͭͳ͛Δ
©2019 Wantedly, Inc. NavHostFragmentͷஔ <androidx.coordinatorlayout.widget.CoordinatorLayout 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"
> <fragment android:id="@+id/nav_host_fragment" android:name="androidx.navigation.fragment.NavHostFragment" android:layout_width="match_parent" android:layout_height="match_parent" app:defaultNavHost="true" app:navGraph="@navigation/onboarding_navigation" /> </androidx.coordinatorlayout.widget.CoordinatorLayout>
©2019 Wantedly, Inc. NavController.navigateͰભҠ // InitialFragment override fun onSignUpSuccessful(userName: String)
{ findNavController() // KTXͷ֦ு .navigate( // safeargsͰੜ͞Εͨίʔυ InitialFragmentDirections .actionInitialFragmentToEmailWelcomeFragment(userName) ) }
©2019 Wantedly, Inc. ൃੜͨ͠
©2019 Wantedly, Inc. w όοΫΩʔͰΕͯ͠·͏ w ը໘͝ͱʹঢ়ଶΛ͍࣋ͬͯΔͷͰΔͱόάΔ w 1PQ#FIBWJPSͰΓઌࢦఆͰ͖Δ͕ɾɾɾ w
Βͤͳ͘͢Δ͜ͱ/BWJHBUJPOͰͰ͖ͳ͍ 1
ϖʔδλΠτϧ ϖʔδαϒλΠτϧ ©2019 Wantedly, Inc. "OESPJE9"DUJWJUZ
©2019 Wantedly, Inc. w BEE0O#BDL1SFTTFE$BMMCBDL͕Ճ w όοΫΩʔ੍ޚΛ'SBHNFOUͰ࣮Ͱ͖Δ AndroidX Activity //
WelcomeFragment override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) // Disable back key requireActivity().addOnBackPressedCallback( viewLifecycleOwner, OnBackPressedCallback { true } ) }
©2019 Wantedly, Inc. ൃੜͨ͠
©2019 Wantedly, Inc. w pUT4ZTUFN8JOEPXT ͕ޮ͔ͳ͍ w /BW)PTU'SBHNFOU͕ 'SBNF-BZPVUΛ͍ͬͯΔ w
'SBNF-BZPVU pUT4ZTUFN8JOEPXT͕ޮ͔ͳ͍ 2
©2019 Wantedly, Inc. 2ͷղܾࡦ class FitsSystemWindowsNavHostFragment : NavHostFragment() { override
fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { // CoordinatorLayoutfitsSystemWindowsʹରԠ͍ͯ͠Δ return CoordinatorLayout(inflater.context).apply { fitsSystemWindows = true id = this.id // ͜ΕNavHostFragmentͷ࣮ͱಉ͡ } } }
©2019 Wantedly, Inc. ·ͱΊ
©2019 Wantedly, Inc. w ࢼݧతʹಋೖ͚ͨ͠Ͳ͍উख͕Α͔ͬͨ w 'SBHNFOU5SBOTBDUJPO w Γͳ͍ͱ͜Ζ͋Δ͕ଞͷ"OESPJE9Ͱิ͑ͨ w
কདྷతʹશମΛ/BWJHBUJPOʹஔ͖͍͑ͨ ·ͱΊ
ϖʔδλΠτϧ ϖʔδαϒλΠτϧ ©2019 Wantedly, Inc. 5IBOLZPV