您好我是片段的新手,我搜索了很多页面,但我仍然没有得到正确答案。我想知道实施碎片时数据传输的方式。我有三个案例
1。片段到片段数据传输:通过实现回调接口
2。片段到活动数据传输:使用 getActivity()。
3。碎片数据传输的活动:我的问题发生在这里。我提到了许多网站,但没有人给出明确的解释。请帮助我。
答案 0 :(得分:0)
对于创建片段时的传输数据,请执行以下操作:
Fragment newFragment = MyFragment.newInstance(any argument);
在片段的构造函数中,执行以下操作:
public static MyFragment newInstance(int someInt) {
MyFragment myFragment = new MyFragment();
Bundle args = new Bundle();
args.putInt("someInt", someInt);
myFragment.setArguments(args);
return myFragment;
}
然后,要立即实例化片段,您可以拨打newInstance()
而不是新的Fragment()
。要恢复片段上片段的数据,请执行以下操作:
int myData = getArguments().getInt("someInt", 0);
用于在执行回调接口的执行时间内将活动数据传输到片段。
答案 1 :(得分:0)
如果您想要的是在活动中对片段进行引用, 然后使用界面在您的活动中注册您的片段:
public interface RegisterFragment {
public void setFragmentReference(MyFragment frag);
}
在您的activity中实现接口,该接口定义了一个保存片段引用的方法:
public class MainActivity extends FragmentActivity implements RegisterFragment {
private MyFragment myFragmentReference;
public void setFragmentReference(MyFragment frag) {
this.myFragmentReference = frag;
}
public void usingFragmentReference() {
if(myFragmentReference != null)
myFragmentReference.doSomething("string data");
}
}
在您的片段子类中,使用接口方法保存引用:
public class MyFragment extends Fragment {
@Override
public void onStart() {
RegisterFragment rf = (RegisterFragment)getActivity();
rf.setFragmentReference(this);
}
public void doSomething(String data) {
...
}
}
这样,您的活动可以在需要时与您的片段进行通信。