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
53
3リポジトリーを2ヶ月でモノレポ化した話 / How I turned 3 repositories into a monorepo in 2 months
kubode
0
230
ウォンテッドリーの「ココロオドル」モバイル開発 / Wantedly's "kokoro odoru" mobile development
kubode
2
1.3k
Firebase Dynamic Linksの代替手段を自作する / Create your own Firebase Dynamic Links alternative
kubode
0
720
技術を根付かせる / How to make technology take root
kubode
1
500
WantedlyでのKotlin Multiplatformの導入と課題 / Kotlin Multiplatform Implementation and Challenges at Wantedly
kubode
0
640
Google Play Consoleデベロッパー アカウントの確認 / Verifying your Play Console developer account
kubode
1
1.4k
Make your Android app into Multiplatform app
kubode
0
230
ウォンテッドリーにおけるモバイルアプリ開発 / iOSDC Japan 2024 Sponsor Session
kubode
1
1.5k
Other Decks in Programming
See All in Programming
Honoでのサプライチェーン侵害対策 〜 3つのライブラリに学ぶ
yusukebe
6
1.3k
「AIで開発し、AIを届ける」をEvalでつなぐ 〜AIネイティブに始めるプロダクト開発の実践〜 / Connecting "Develop with AI, deliver AI" with Eval
rkaga
4
5.1k
jQueryをバージョンアップする前に使いたいjQuery Migrate
matsuo_atsushi
0
520
肥大化するレガシーコードに立ち向かうためのインターフェース分離と依存の逆転 / JJUG CCC 2026 Spring
hirokunimaeta
0
570
Signal Forms: Beyond the Basics @ngBaguette 2026 in Paris
manfredsteyer
PRO
0
250
JavaDoc 再入門
nagise
1
360
New "Type" system on PicoRuby
pocke
1
960
生成AI時代にこそ効くGo | Why Go Works in the Age of Generative AI
mom0tomo
8
3.2k
Contextとはなにか
chiroruxx
1
330
Mujeres en SEO Summit 2026 - Greatest Disaster Hits en Web Performance
guaca
0
180
技術記事、AIに書かせるか、自分で書くか? 〜それでも私が自分の手で書く理由〜 / #QiitaConference
jnchito
2
1.4k
正しくソフトウェアを作る、前提を疑うための認知の視点 / doubt-premise
minodriven
21
6.7k
Featured
See All Featured
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.5k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
Evolving SEO for Evolving Search Engines
ryanjones
0
220
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.7k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.3k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
250
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
420
Mind Mapping
helmedeiros
PRO
1
250
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.4k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2k
The agentic SEO stack - context over prompts
schlessera
0
820
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