Kami melanjutkan cerita tentang hal baru pustaka Jetpack, yang dirancang untuk menyederhanakan pertukaran data antar komponen aplikasi Android. Bagian pertama dikhususkan untuk mentransfer data dari Aktivitas dan Hasil Aktivitas Api baru.
, Google Fragment. โSingle Activityโ Android-.
โ ?โ - . -: ViewModel, Activity, targetFragment .
Fragment Result Api . , - . , Api , .
1.3.0-alpha04, FragmentManager FragmentResultOwner. , FragmentManger , . , .
, FragmentManager:
, FragmentManger
setFragmentResultListener()
.
, FragmentManger Bundle, .
setFragmentResult()
.
FragmentManger , Bundle , .
:
Fragment Result Api lifecycle- - , STARTED, DESTROYED.
โ โ FragmentManger Map:
Map<String, Bundle>
,
Map<String, LifecycleAwareResultListener>
FragmentResultListener, FragmentManager Map, , Map. , , FragmentResultListener LifecycleAwareResultListener.
, FragmentManager . , Map .
.
: ProductsFragment , , SortFragment . Fragment Result Api.
. , .
1
ProductsFragment, , FragmentManager. - setFragmentResultListener
fragment-ktx, , .
onCreate():
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setFragmentResultListener("request_key") { key, bundle ->
val selectedSort = bundle.getParcelable<Sort>("extra_key")
//
}
}
2
SortFragment , setFragmentResult, Bundle.
applyButton.setOnClickListener {
setFragmentResult(
"request_key",
bundleOf("extra_key" to getSelectedSort())
)
}
, Fragment Result Api.
Api , , FragmentManager .
FragmentManager
FragmentManager . : parentFragmentManager, childFragmentManager FragmentManager -. , FragmentManager.
master-detail . , FragmentA FragmentB, .
FragmentManager -, .. . FragmentManager requireActivity().supportFragmentManager
parentFragmentManager
.
, , DialogFragment , FragmentA FragmentC.
, Fragment FragmentA :
FragmentManager requireActivity().supportFragmentManager
FragmentManager FragmentA. , FragmentA childFragmentManager, Fragment parentFragmentManager.
Lifeycle
, Fragment Result Api lifecycle- - , . .
- onCreate, STARTED, FragmentManager , - .
STARTED, FragmentManager , ( FragmentManager Map<String, Bundle>, ).
, , โ โ .
, , ( CREATED), , .
, . ? , FragmentManager Map<String, LifecycleAwareListener>, . , .
, :
Fragment Result Api , . , targetFrament , targetFrament Deprecated.
Api
- , view
(FragmentManager Parcelable)
:
,
Bundle, . , ClassCastException.