根据Android指南,http://developer.android.com/training/basics/fragments/communicating.html一个片段应该通过宿主Activity向另一个片段发送数据。我想知道这有什么原因。因为在我的代码中,我放置了一个变量来保存指向另一个片段的指针,并在onActivityCreated中赋值
//this code is in class FragmentType1, assign the pointer to the FragmentType2 for later use
@Override
public void onActivityCreated(final Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
final FragmentManager fm = getFragmentManager();
mOtherFragment = (FragmentType2) fm
.findFragmentById(R.id.container_fragment);
}
后来,如果我想为FragmentType2设置数据,我只需调用:
public setData(MyData data){
if (mOtherFragment!=null)
mOtherFragment.setData(data);
}
现在一切都很好。这种方法有什么问题?塔克斯。
最后但同样重要的是,动态添加的片段很难确保两个片段同时“活着”,尤其是当涉及到嵌套片段时。片段的生命周期很难正确管理,使用直接通信假定你完全控制了这一点,这很少是真的。
我认为最好的模式是使用事件总线,如Otto或EventBus或RoboGuice的总线。
另一个原因是在托管活动被破坏时保持状态。
重新创建后,您可以从托管活动中获取状态,因为片段本身无法直接保存其状态。
至少有两个原因:
问题内容: 我的意思是: 我用谷歌搜索,发现了这个: 表示定义接口方法的实现。但是接口没有实现,因此是不可能的。 但是,interface是100%抽象的类,抽象类可以实现接口(100%抽象的类)而无需实现其方法。将其定义为“接口”时会出现什么问题? 详细来说, 问题答案: 表示实现,当旨在声明仅提供不提供实现时。 A 100%,是功能上等同于,但它也可以实现,如果你想(在这种情况下,它不会保持1
类别:账户余额 我已经把这两个类都放在Balance.java和Account tBalance.java.这两个文件都在E:/程序/MyPack. Balance.java编译没有错误但是当我编译Account tBalance.java它给出错误:找不到符号"平衡". 我无法弄清楚为什么当两个类都在同一个包中声明时? 我正在使用javac B从MyPack编译alance.javajavac
我知道容器可以有其他参数,如填充或装饰,但如果我不使用这些,为什么我要使用SizedBox而不是容器? 它们之间存在性能差异?
为什么我不能在英特尔x86-64汇编中直接将一个字节从内存移到64位寄存器? 例如,此代码: 印刷品: 为了使代码正常工作,我需要将寄存器r12和r13的移动字节更改为: 现在,它打印出预期内容: 我们为什么要这样做? 有更简单的方法吗? 谢谢
我正在做一个函数,将删除一个实时Firebase中的记录。一个人只能通过知道生成的唯一ID来删除他们自己的记录。但是,当我想要实现要删除的时,我不能调用。有人知道我做错了什么吗?多谢了。 错误我的错误演示,变量在我的删除函数中无法识别 我的get类 我的代码
我正在尝试将数据从DialogFraank发送到创建此对话框的Fraank。在目标片段中,我使用以下代码: 我还在fragment实现了我的接口: 在DialogFragment中,我使用以下代码: 并发送数据: 我还试图从这个问题中使用onActivityResult(): 接收数据: 但我没有收到数据:(((