我有一个要添加片段的活动。有一个Fragment(WhenFragment),上面要添加另一个片段(DateSelectionFragment)以获取日期,当我回按时,我需要该日期并想在文本中设置view。我为此使用了OnFragmentInteractionListener,它可以正确返回WhenFragment的结果。但是我无法在该OnFragmentInteractionListener实现中访问Textview来为其设置日期。
@Override
public void onFragmentInteraction(Bundle bundle) {
mBinding.textView.setText(bundle.getString("result"),"");
}
返回到我正在使用的WhenFragment
getActivity().onBackPressed();
mListener.onFragmentInteraction(bundle);
它给出了nullPointerException。我们非常感谢您的帮助。
答案 0 :(得分:1)
请参阅有关如何使用接口进行片段之间通信的文档:https://developer.android.com/training/basics/fragments/communicating
此外,如果您在片段/活动中使用ViewModels,this教程可能会有所帮助。 (您可以使用活动的ViewModel在片段之间传输数据)
答案 1 :(得分:0)
尝试如下更改后退功能:-
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();
}
}
一些有用的链接:-
答案 2 :(得分:-1)
您可以将值存储在sharedPreferences中,然后稍后从其他位置获取。