Slide 1

Slide 1 text

#BDLLFZIBOEMJOHXJUI/BWJHBUJPO TIJCVZBBQL  দଜߤ༟

Slide 2

Slide 2 text

"CPVU.F w দଜߤ༟ ,PTVLF.BUTVNVSB  w /"7*5*.&+"1"/$P -UE
 "OESPJEJ04%FWFMPQFS w ,BXBTBLJ'SPOUBMF4VQQPSUFS w 5XJUUFS
 NLPTVLF!LPTVLF@NUN

Slide 3

Slide 3 text

5PEBZ`TUIFNF w )PXUPIBOEMFCBDLLFZQSFTTXJUI/BWJHBUJPO w ฤूը໘ͳͲͰόοΫΩʔΛԡԼͨ͠ࡍʹɺʮฤूΛഁغͯ͠΋ΑΖ͍͠ Ͱ͔͢ʁʯμΠΞϩάΛग़͍ͨ͠ͱ͖ͳͲΛ૝ఆ͍ͯ͠·͢
 ˞࢓༷ͷྑ͠ѱ͠͸͜͜Ͱ͸͠·ͤΜ

Slide 4

Slide 4 text

8IBU`T/BWJHBUJPO w 0OFDPNQPOFOUTPG"OESPJE+FUQBDL w /BWJHBUJPONBLFT'SBHNFOUUSBOTJUJPOFBTJFS

Slide 5

Slide 5 text

/BWJHBUJPO(SBQI ʮ໭Δʯ౳ͷը໘ભҠ͸ఆٛͰ͖Δ͕ɺ
 ʮόοΫΩʔʯͷΠϕϯτൃੜ࣌ͷॲཧ͸ॻ͚ͳ͍

Slide 6

Slide 6 text

࣮૷ํ๏

Slide 7

Slide 7 text

"DUJWJUZ override fun onBackPressed() { val navHost = supportFragmentManager .findFragmentById(R.id.my_nav_host_fragment) as NavHostFragment val target = navHost.childFragmentManager .findFragmentById(R.id.my_nav_host_fragment) if (target is OnBackPressHandler) { if (target.onBackPressed()) { return } } super.onBackPressed() } όοΫΩʔͷ࠷ॳͷΠϕϯτड͚औΓޱͰ͋Δ"DUJWJUZͰ
 ΠϕϯτΛड͚औΓ·͢

Slide 8

Slide 8 text

"DUJWJUZ override fun onBackPressed() { val navHost = supportFragmentManager .findFragmentById(R.id.my_nav_host_fragment) as NavHostFragment val target = navHost.childFragmentManager .findFragmentById(R.id.my_nav_host_fragment) if (target is OnBackPressHandler) { if (target.onBackPressed()) { return } } super.onBackPressed() } /BW)PTU'SBHNFOUΛऔಘ͠·͢

Slide 9

Slide 9 text

/BW)PTU'SBHNFOU /BWJHBUJPOͰը໘ભҠΛߦ͏৔߹ͷ3PPUʹ૬౰͢Δ'SBHNFOUɻ
 /BWJHBUJPO͸ɺ͜ͷ/BW)PTU'SBHNFOUͷ্ͰDIJME'SBHNFOUͱͯ͠ը໘ભ ҠΛߦ͍·͢ /BW)PTU'SBHNFOU 'SBHNFOU" 'SBHNFOU# 'SBHNFOU$ DIJMEGSBHNFOU OBWJHBUF OBWJHBUF

Slide 10

Slide 10 text

/BW)PTU'SBHNFOU /BWJHBUJPOͰը໘ભҠΛߦ͏৔߹ͷ3PPUʹ૬౰͢Δ'SBHNFOUɻ
 /BWJHBUJPO͸ɺ͜ͷ/BW)PTU'SBHNFOUͷ্ͰDIJME'SBHNFOUͱͯ͠ը໘ભ ҠΛߦ͍·͢ /BW)PTU'SBHNFOU

Slide 11

Slide 11 text

/BW)PTU'SBHNFOU /BWJHBUJPOͰը໘ભҠΛߦ͏৔߹ͷ3PPUʹ૬౰͢Δ'SBHNFOUɻ
 /BWJHBUJPO͸ɺ͜ͷ/BW)PTU'SBHNFOUͷ্ͰDIJME'SBHNFOUͱͯ͠ը໘ભ ҠΛߦ͍·͢ "DUJWJUZͰࢀর͍ͯͨ͠JE

Slide 12

Slide 12 text

"DUJWJUZ override fun onBackPressed() { val navHost = supportFragmentManager .findFragmentById(R.id.my_nav_host_fragment) as NavHostFragment val target = navHost.childFragmentManager .findFragmentById(R.id.my_nav_host_fragment) if (target is OnBackPressHandler) { if (target.onBackPressed()) { return } } super.onBackPressed() } /BW)PTU'SBHNFOUΛऔಘ͠·͢

Slide 13

Slide 13 text

"DUJWJUZ override fun onBackPressed() { val navHost = supportFragmentManager .findFragmentById(R.id.my_nav_host_fragment) as NavHostFragment val target = navHost.childFragmentManager .findFragmentById(R.id.my_nav_host_fragment) if (target is OnBackPressHandler) { if (target.onBackPressed()) { return } } super.onBackPressed() } /BW)PTU'SBHNFOU͔Βݱࡏදࣔதͷը໘ 'SBHNFOU Λऔಘ͠·͢

Slide 14

Slide 14 text

/BW)PTU'SBHNFOU`TDIJMEGSBHNFOUT /BW)PTU'SBHNFOUʹ͸ͭͷDIJME'SBHNFOU͕BUUBDI͞Ε͍ͯ·͢
 ͻͱͭ͸ݱࡏදࣔதͷ'SBHNFOUɺ΋͏ͻͱͭ͸4UBUF'SBHNFOUͰ͢ // FragmentNavigation.java public void navigate(Destination dest, Bundle args, NavOptions option){ final Fragment frag = dest.createFragment(args); final FragmentTransaction ft = mFragmentManager.beginTransaction(); (్தུ…) ft.replace(mContainerId, frag); final StateFragment oldState = getState(); if (oldState != null) { ft.remove(oldState); } final @IdRes int destId = dest.getId(); final StateFragment newState = new StateFragment(); newState.mCurrentDestId = destId; ft.add(newState, StateFragment.FRAGMENT_TAG); ݱࡏදࣔதͷ'SBHNFOU N$POUBJOFS*E͸/BW)PTU'SBHNFOUͱಉ͡*% 4UBUF'SBHNFOU

Slide 15

Slide 15 text

4UBUF'SBHNFOU @RestrictTo(RestrictTo.Scope.LIBRARY) public static class StateFragment extends Fragment { static final String FRAGMENT_TAG = “…FragmentNavigator.StateFragment”; private static final String KEY_CURRENT_DEST_ID = "currentDestId"; int mCurrentDestId; @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (savedInstanceState != null) { mCurrentDestId = savedInstanceState.getInt(KEY_CURRENT_DEST_ID); } } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putInt(KEY_CURRENT_DEST_ID, mCurrentDestId); } } 6*Λ࣋ͨͳ͍'SBHNFOU ʮ໭Δʯ࣌ͷ*%Λอ͍࣋ͯ͠Δ͚ͩ

Slide 16

Slide 16 text

"DUJWJUZ override fun onBackPressed() { val navHost = supportFragmentManager .findFragmentById(R.id.my_nav_host_fragment) as NavHostFragment val target = navHost.childFragmentManager .findFragmentById(R.id.my_nav_host_fragment) if (target is OnBackPressHandler) { if (target.onBackPressed()) { return } } super.onBackPressed() } /BW)PTU'SBHNFOU͔Βݱࡏදࣔதͷը໘ 'SBHNFOU Λऔಘ͠·͢

Slide 17

Slide 17 text

"DUJWJUZ override fun onBackPressed() { val navHost = supportFragmentManager .findFragmentById(R.id.my_nav_host_fragment) as NavHostFragment val target = navHost.childFragmentManager .findFragmentById(R.id.my_nav_host_fragment) if (target is OnBackPressHandler) { if (target.onBackPressed()) { return } } super.onBackPressed() } ͋ͱ͸'SBHNFOU͕0O#BDL1SFTT)BOEMFSΛ࣮૷͍ͯͨ͠Β
 PO#BDL1SFTTFE ΛݺΜͰ͋͛Δ͚ͩͰ͢

Slide 18

Slide 18 text

0O#BDL1SFTT)BOEMFS όοΫΩʔϋϯυϦϯά͍ͨ͠'SBHNFOUͰ͜ΕΛ࣮૷͠ɺ
 USVFΛฦ٫͠·͢ interface OnBackPressHandler { fun onBackPressed(): Boolean }

Slide 19

Slide 19 text

#BDL1SFTTΛड͚औΔ'SBHNFOU override fun onBackPressed(): Boolean { AlertDialog.Builder(requireContext()) .setMessage("ݱࡏमਖ਼தͷ಺༰Λഁغͯ͠લͷը໘ʹ໭ͬͯ΋ΑΖ͍͠Ͱ͔͢ʁ") .setPositiveButton("ઃఆΛഁغ͢Δ") { _, _ -> Navigation.findNavController(requireActivity(), 
 R.id.my_nav_host_fragment).popBackStack() } .setNegativeButton("ฤूΛଓ͚Δ") { _, _ -> } .show() return true } ࣮ࡍʹCBDL1SFTTͱಉ౳ͷॲཧΛߦ͏ʹ͸
 /BW$POUSPMMFS͔ΒQPQ#BDL4UBDL Λ࣮ߦ͠·͢

Slide 20

Slide 20 text

5IBOLZPVGPSZPVSBUUFOUJPO

Slide 21

Slide 21 text

3FGFSFODFT w 2JJUB/BWJHBUJPOͰόοΫΩʔΛϋϯυϦϯά͢Δ
 IUUQTRJJUBDPNNLPTVLFJUFNTGEBEBBEF w "OESPJE+FUQBDLNBOBHF6*OBWJHBUJPOXJUI/BWJHBUJPO$POUSPMMFS
 IUUQTXXXZPVUVCFDPNXBUDI W($9U$KUH w /BWJHBUJPO$PEFMBC
 IUUQTDPEFMBCTEFWFMPQFSTHPPHMFDPNDPEFMBCTBOESPJEOBWJHBUJPO JOEFYIUNM JOEFY''JP w IUUQTEFWFMPQFSBOESPJEDPNUPQJDMJCSBSJFTBSDIJUFDUVSFOBWJHBUJPO