当前位置: 首页 > 知识库问答 >
问题:

在case活动中从片段返回结果,与startActivityForResult一样

殳智志
2023-03-14

我有一个活动,我正在添加片段。有一个片段(WhenFragment),我在其上添加另一个片段(DateSelectionFragment)来获取日期,当我按back时,我需要该日期并希望在文本视图中设置。我为此使用了OnFragmentInteractionListener,它正确返回WhenFragment的结果。但我无法在OnFragmentInteractionListener实现中访问Textview来设置日期。

@Override
public void onFragmentInteraction(Bundle bundle) {
   mBinding.textView.setText(bundle.getString("result"),"");
}

回到我使用碎片的时候

 getActivity().onBackPressed();
 mListener.onFragmentInteraction(bundle);

它给出了nullPointerException。非常感谢您的帮助。

共有2个答案

微生旻
2023-03-14

您可以将值存储在shared首选项中,然后稍后从其他地方获取它。

南宫嘉
2023-03-14

尝试更改后面的功能如下:-

 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();          
}
}

一些有用的完整链接:-

带有嵌套片段的回栈行为

将数据从嵌套片段发送到父片段

 类似资料:
  • 我在活动C中有四个片段,它们的行为就像标签一样。我必须从一个片段转到一个新的活动X。现在我想回到从活动X到片段的片段。 这是我的主要活动 '公共类MainInterface扩展了ActionBarActivity{ } ' 下面是活动视图中的公共类讨论。onclick侦听器{ ###

  • 我有两个活动类和一个非活动类,它们从构造函数中传递的上下文调用startActivityForResult()。它看起来是这样的:FirstActivity- 不活跃 第二活动 第一活动

  • 我有两个活动,我在第二个活动上启动一个Intent以使用start ActivityForResult(...)检索结果,然后使用onActivityResult(...)处理结果。 问题是结果从第二个活动返回的代码始终RESULT_CANCELED。因此,不要通过条件的“resultCode == RESULT_OK”,在我的Main Acitivty中更新textView。 主要活动 第二项活

  • 在Android中,当我们用一个新的片段替换容器视图时,我们可以使用replace()和addToBackStack(),因此按下back按钮就可以转到上一个片段。 但如果出现以下情况怎么办: 在Activity1中,我可以按下back按钮从fragment2转到fragment1。但当fragment2启动另一个活动时,从Activity2按下back按钮,它会将我带到Activity1中的fr

  • 亲活性 这意味着,onActivityResult()将在作为该子片段的父片段的片段内部调用refresh。作为连锁反应,refreshDeliveryFragment()将调用这两个子片段中的一个子片段来刷新它们的recyclerview数据。

  • 我正在建立一个简单的应用程序,我想从片段回到物理按钮的活动。我该怎么做?我试图杀死碎片,但它不起作用。