[英]Passing data from a adapter to fragment using startActivityForResult within same activity
[英]Return result from fragment just as startActivityForResult in case Activity
我有一個活動,我在其中添加片段。有一個片段(WhenFragment),我在其中添加另一個片段(DateSelectionFragment)來獲取日期,當我回按時,我需要該日期並希望在文本視圖中設置。我為此使用 OnFragmentInteractionListener 正確返回結果 WhenFragment。但我無法訪問該 OnFragmentInteractionListener 實現中的 Textview 以為其設置日期。
@Override
public void onFragmentInteraction(Bundle bundle) {
mBinding.textView.setText(bundle.getString("result"),"");
}
回到我正在使用的 WhenFragment
getActivity().onBackPressed();
mListener.onFragmentInteraction(bundle);
它給出了 nullPointerException。 任何幫助都受到高度贊賞。
請參閱有關如何使用接口在片段之間進行通信的文檔: https : //developer.android.com/training/basics/fragments/communication
此外,如果您在片段/活動中使用ViewModel, 本教程可能會有所幫助。 (您可以使用activity的ViewModel在片段之間傳輸數據)
嘗試按如下方式更改后退功能: -
mListener.onFragmentInteraction(bundle);
getActivity().onBackPressed();
要么
如果您要使用getChildFragmentManager()
添加第二個片段,則首先必須管理片段堆棧,而不是活動堆棧。類似於:-
@Override
public void onBackPressed() {
// If the fragment exists and has some back-stack entry
if (mActivityDirectFragment != null && mActivityDirectFragment.getChildFragmentManager().getBackStackEntryCount() > 0){
// Get the fragment fragment manager - and pop the backstack
mActivityDirectFragment.getChildFragmentManager().popBackStack();
}
// Else, nothing in the direct fragment back stack
else{
// Let super handle the back press
super.onBackPressed();
}
}
一些有用的鏈接: -
您可以將值存儲在sharedPreferences中,然后從其他地方獲取它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.