【发布时间】:2016-01-18 17:45:17
【问题描述】:
所以我有一个片段(WifiSetupFragment),它调用一个DialogFragment,而那个DialogFragment 需要将一个字符串传回给原始片段。我知道要做到这一点,您在活动中有一个接口,它将像这样将数据发送到原始片段,我已经在这样做了:
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.addToBackStack(null);
transaction.replace(R.id.content_frag, WifiSetupFragment.newInstance(password));
transaction.commit();
所以我第一次调用 WifiSetupFragment 时,我还没有创建 DialogFragment,因为我还没有点击一个项目来打开对话框。我的问题是我应该打电话吗
WifiSetupFragment.newInstance(null)
并对我的片段中的密码字符串进行空检查?因为除非 DialogFragment 打开,否则我没有密码,而且它并不总是打开。如果这没有意义,请告诉我,我会尝试更清楚地解释。我想我觉得有一个字符串的参数可能只是偶尔发送到这个片段,因为数据不是经常被传入。
【问题讨论】:
-
您能否提供更多关于片段和对话目的的详细信息?我的理解是,片段报告了 wifi 网络列表。通过单击其中之一,应显示用于插入密码的对话框。通过确认,密码被发送回 Fragment 并相应地更新其 UI。对吗?
-
dialogfragment不能使用接口直接与fragment通信有什么原因吗?
-
@thetonrifles 是的,没错。
-
@MidasLefko 我正在阅读的东西似乎说片段不应该直接相互通信,只能通过活动来进行,这就是我试图这样做的原因。另外,我确实直接尝试过,但没有成功,但这可能是我的错误。
-
@googlygoogly2 好吧,所以你可能只需要让片段通过一个简单的界面从对话框接收输入密码。您无需参与该活动。