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
230
3リポジトリーを2ヶ月でモノレポ化した話 / How I turned 3 repositories into a monorepo in 2 months
kubode
0
310
ウォンテッドリーの「ココロオドル」モバイル開発 / Wantedly's "kokoro odoru" mobile development
kubode
2
1.4k
Firebase Dynamic Linksの代替手段を自作する / Create your own Firebase Dynamic Links alternative
kubode
0
780
技術を根付かせる / How to make technology take root
kubode
1
540
WantedlyでのKotlin Multiplatformの導入と課題 / Kotlin Multiplatform Implementation and Challenges at Wantedly
kubode
0
700
Google Play Consoleデベロッパー アカウントの確認 / Verifying your Play Console developer account
kubode
1
1.5k
Make your Android app into Multiplatform app
kubode
0
270
ウォンテッドリーにおけるモバイルアプリ開発 / iOSDC Japan 2024 Sponsor Session
kubode
1
1.6k
Other Decks in Programming
See All in Programming
Apple Intelligence を用いた個人情報誤送信防止、及びユーザーリクエスト体験の改善について
yukiny
0
350
Agents on Rails - Rails at Scale 2026
irinanazarova
0
560
複雑なUIコンポーネントとの ⻑い付き合い⽅:波及するバグからテスト戦略を経て、安全な再設計へ
mixplace
0
410
phperだってパンチカードでコーディングしたい
o0h
PRO
0
330
[2026-09-26]空論ジェネリックプロセス~テスト資産とAIで紡ぐ、再現可能なパフォーマンスチューニングの話~
tosite
0
270
[ハンズオン]AIへの指示だけで「五目並べ」を作ってみよう
satoshi256kbyte
1
380
RAG の “R” を Swift で覗いてみる 〜「意味から探す」検索の仕組み〜
nao_randd
0
160
機械に任せるテスト、人が見るテスト ⽣成AIで引き直した、運⽤保守フェーズの線引き
dske104
0
190
FactoryBotをやめればRSpecは速くなるのか?
yuta_onishi_97
0
290
UnityでSystem.Net.WebSocketsなWebSocketサーバが動かないのでUnity Monoのコードを覗いてみた / about implementing websocket server with unity mono
drumath2237
1
610
IBM Bob でAI駆動開発『QC-Playbook』
ichirokano2
0
110
月間100万人のサービス刷新で、 技術選定をHonoに振り切った話
yutobara
8
6.6k
Featured
See All Featured
Believing is Seeing
oripsolob
1
240
What the history of the web can teach us about the future of AI
inesmontani
PRO
2
740
So, you think you're a good person
axbom
PRO
2
2.2k
Code Review Best Practice
trishagee
74
20k
Unsuck your backbone
ammeep
672
58k
The SEO identity crisis: Don't let AI make you average
varn
0
590
YesSQL, Process and Tooling at Scale
rocio
174
15k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
220
RailsConf 2023
tenderlove
30
1.6k
WENDY [Excerpt]
tessaabrams
14
40k
Optimizing for Happiness
mojombo
378
71k
4 Signs Your Business is Dying
shpigford
187
23k
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