【问题标题】:Opening another dialog fragment and closing the previous one打开另一个对话框片段并关闭前一个
【发布时间】:2018-07-20 07:28:19
【问题描述】:

在我的代码中,当单击文本视图时,我必须打开另一个对话框片段,文本视图位于主对话框片段中

textView.setOnClickListener(new View.OnclickListener(){
  @Override
  public void onClick(View v){
     NewDialogFragment.newInstance().show(getChildFragmentManager(),"");
     dismiss(); 
   }
});

问题是,当在主对话框片段中单击 textview 时,得到dismiss() 但新的 DialogFragment 没有打开,

预期结果是主 dialogFrament 应该出现dismiss() 并且应该出现NewDialogFragment()

谢谢

【问题讨论】:

  • 请正确分享您的代码...
  • 你能分享完整的NewDialogFragment 以及你正在调用的对话片段吗?

标签: android android-studio android-fragments android-dialogfragment android-dialog


【解决方案1】:

getChildFragmentManager() 更改为 getParentFragmentManager()

这样做的原因是因为您想要ActivityFragmentManager,而不是您即将解雇的DialogFragment。否则,您将提供对话框的FragmentManager,然后关闭它,这将关闭您刚刚附加的对话框。

textView.setOnClickListener(new View.OnclickListener(){
  @Override
  public void onClick(View v){
     NewDialogFragment.newInstance().show(getParentFragmentManager(),"");
     dismiss(); 
   }
});

【讨论】:

  • 您可能需要考虑改用 getParentFragmentManager()
  • 谢谢。已更新答案。仅供参考,getParentFragmentManager() 与调用 getFragmentManager() 相同,但现在后者已被弃用。
【解决方案2】:

试试这个:

textView.setOnClickListener(s->{
NewDialogFragment.newInstance().dismiss()
NewDialogFragment.newInstance().show(getChildFragmentManager(),"");
});

【讨论】:

  • 同样的结果,没用,还有什么我可以尝试的,请建议
  • 第一个片段是如何打开的?
  • 与 newInstance().show(getChildFragmentManager(),"") 方法相同,但在片段中,现在我必须从对话框片段中打开新的对话框片段
  • 然后你必须调用 NewDialogFragment.newInstance().dismiss() 检查更新的答案。
  • 它崩溃了,在显示之前无法关闭片段。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-30
  • 2016-06-03
  • 2012-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多