Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
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
150
3リポジトリーを2ヶ月でモノレポ化した話 / How I turned 3 repositories into a monorepo in 2 months
kubode
0
250
ウォンテッドリーの「ココロオドル」モバイル開発 / Wantedly's "kokoro odoru" mobile development
kubode
2
1.4k
Firebase Dynamic Linksの代替手段を自作する / Create your own Firebase Dynamic Links alternative
kubode
0
730
技術を根付かせる / How to make technology take root
kubode
1
500
WantedlyでのKotlin Multiplatformの導入と課題 / Kotlin Multiplatform Implementation and Challenges at Wantedly
kubode
0
650
Google Play Consoleデベロッパー アカウントの確認 / Verifying your Play Console developer account
kubode
1
1.4k
Make your Android app into Multiplatform app
kubode
0
240
ウォンテッドリーにおけるモバイルアプリ開発 / iOSDC Japan 2024 Sponsor Session
kubode
1
1.5k
Other Decks in Programming
See All in Programming
JAWS-UG横浜 #102 AWSサ終供養LT会 成仏できない AWS サービスたち 〜本日、三体供養します〜
maroon1st
0
220
ソフトウェア設計に溶けるインフラ ― AWS CDK のインフラ認識論
konokenj
2
610
【SRE NEXT 2026 Lunch Session】一人目専任SREの立ち上げを加速する ― AIと進めたオンボーディングで2分を0.04秒にした話
pkshadeck
PRO
0
2.9k
言語を使う側から、作る側へ。 自作 Lisp で得た新たな気づき。
andpad
0
130
act2-costs.pdf
sumedhbala
0
120
継続モナドとリアクティブプログラミング
yukikurage
3
620
地域 SRE コミュニティ最前線 - ホンマでっかSRE勉強会
tk3fftk
0
270
共通化で考えるべきは、実装より公開する型だった
codeegg
0
270
Claude Team Plan導入・ガイド
tk3fftk
0
220
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
340
광주소프트웨어마이스터고등학교 DevFest 특강 - 바이브 코딩 시대에서 주니어 개발자로 살아남는 방법
utilforever
1
150
信頼性について考えてみる(SRE NEXT 2026 miniLT)
hayama17
0
200
Featured
See All Featured
The SEO identity crisis: Don't let AI make you average
varn
0
520
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
370
Mind Mapping
helmedeiros
PRO
1
290
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
220
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.4k
Visualization
eitanlees
152
17k
The agentic SEO stack - context over prompts
schlessera
0
850
Everyday Curiosity
cassininazir
0
260
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
GitHub's CSS Performance
jonrohan
1033
470k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
180
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