碎片/活动中的数据传输

时间:2014-06-06 02:10:21

标签: android android-fragments

您好我是片段的新手,我搜索了很多页面,但我仍然没有得到正确答案。我想知道实施碎片时数据传输的方式。我有三个案例

1。片段到片段数据传输:通过实现回调接口

2。片段到活动数据传输:使用 getActivity()

3。碎片数据传输的活动:我的问题发生在这里。我提到了许多网站,但没有人给出明确的解释。请帮助我。

2 个答案:

答案 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) {
                ...
    }

}

这样,您的活动可以在需要时与您的片段进行通信。