我试着寻找,但还是有点迷路。我通常通过接口或广播接收器通过活动进行片段间通信。
无论如何,我的问题是getTargetFragment的用途是什么?有人能提供一个用例或一个简单的例子,让我理解它的用法吗?
我从阅读文档中得到的信息是,这些方法是从另一个片段访问数据的另一种方式。这里是我编写的一个示例项目,它演示了使用这些方法的单个用例。我确信还有更多的用例。。。
我最终发现了如何在片段中使用setTarget,并希望与大家分享。当您想要在片段之间进行通信时,它非常有用。
下面是一个示例:假设您想显示一个对话框,当它关闭时,您想执行一些操作。
因此,在您的片段1
中将使用对话框,您可以这样做:
myDialogFragment.setTargetFragment(fragment1, myDialogFragment.REQ_CODE);
在调用对话框的片段中,您需要重写onActivityResult,如下所示:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == CoDDialogFragment.REQ_CODE)
exit(); //or whatever you want to do here
}
在myDialogFragment中,您可以执行以下操作:
TellTargetYouGotResults(REQ_CODE);
//...
private void TellTargetYouGotResults(int code) {
Fragment targetFragment = getTargetFragment(); // fragment1 in our case
if (targetFragment != null) {
targetFragment.onActivityResult(getTargetRequestCode(), code, null);
}
}
其中REQ\u代码当然可以是任意int。对于片段到片段的通信非常有用。但我仍然更喜欢事件总线,因为有时在向目标发送数据后,它的视图可能已经被破坏(例如它是一个片段),然后如果您尝试在ActivityResult中更新视图,您会遇到崩溃。所以我想说,只传递数据而不更新UI很有用,除非您完成了“添加”片段事务,而不是替换(这会破坏视图但保持状态)。
用例=同一活动托管的2个片段。
其中,startActivityForResult()建立了两个活动之间的关系,setTargetFragment()定义了两个片段之间的调用方/被调用方关系。
setTargetFraank(目标)让“被调用”片段知道将结果发送到哪里。onActivityResult()
在这种情况下是手动调用的。
public class Caller extends Fragment
Fragment called = Called.newInstance()
called.setTargetFragment(this)
public class Called extends DialogFragment
intent = amazingData
getTargetFragment().onActivityResult(getTargetRequestCode(), resultCode, intent)
在这个问题的答案中,用户列出了和12个变体的值(见下文)。这些价值观从何而来?的文档没有在任何地方列出这些信息(我在这里和这里检查过)。这些字符串在Android styles.xml文件的各个地方都列出了,但是这些字符串如何映射回Roboto字体呢? 在android 4.1/4.2中,有以下Roboto字体系列可用: 与此相结合 常规 斜体 粗体 粗体斜体 光线 浅斜体 瘦 斜体 浓缩规则 缩
问题内容: 如何在hibernate中使用级联和逆运算?定义它们的过程/标签是什么?它们彼此相关吗?它们如何有用? 问题答案: 在通过中介表进行多对多关系的情况下;“级联”表示是否在子表中创建/更新记录。而“反向”表示是否在中间表中创建/更新记录 例如,假设情况1下的学生可以拥有多部电话。因此,学生班级拥有“手机套”的属性。另外,一部电话可以由多个学生拥有。因此,“电话”类具有“学生组”的属性。s
问题内容: PHP 中的and 运算符是什么? 例如: 问题答案: 这是 条件运算符 。 表示“如果为真,则使用;否则为”。 它也有一个简短的形式。 表示“如果为真,则使用;否则为”。 人们会告诉您这是“三元运算符”。错了 是 一个 三元运算符,这意味着它有三个操作数。人们常常以为它的名字叫“三元运算符”,因为它通常是给定语言唯一的三元运算符。
问题内容: 在“ Python编程 ”中,提到了。我来自背景,以前没有听说过这个词。什么是? 在本示例的两行之间进行阅读(我已经链接了它,因为它很长),我认为这是使用多重继承来扩展类而不是“适当的”子类的一种情况。这是正确的吗? 为什么我要这样做而不是将新功能放入子类中?因此,为什么混合/多重继承方法比使用组合更好? 什么将mixin与多重继承分开?这仅仅是语义问题吗? 问题答案: 是一种特殊的多
本文向大家介绍什么是ajax和json,它们的优缺点相关面试题,主要包含被问及什么是ajax和json,它们的优缺点时的应答技巧和注意事项,需要的朋友参考一下 ajax的全称:Asynchronous Javascript And XML。 异步传输+js+xml。实现无刷新状态更新页面和异步提交 所谓异步,在这里简单地解释就是:向服务器发送请求的时候,我们不必等待结果,而是可以同时做其他的事情,
问题内容: 今天,我浏览了该站点上的一些问题,发现提到了 以单例模式使用的这种解决方案声称具有线程安全性的优点。 我从未使用过,并且使用Java编程已经有两年多了。显然,他们改变了很多。现在,他们甚至在自己内部提供了对OOP的全面支持。 现在为什么要在日常编程中使用枚举?为什么? 问题答案: 当变量(尤其是方法参数)只能从一小部分可能的值中取出一个时,应始终使用枚举。例如类型常量(合同状态:“永久