Android– 如何将数据从活动传递到片段?

Android– 如何将数据从活动传递到片段?,第1张

概述参见英文答案>Communicatingbetweenafragmentandanactivity–bestpractices                                    9个我需要将数据从活动传递片段.我知道我可以使用bundle,但是一旦我传递数据,我就无法在不调用和再次创建片段的

参见英文答案 > Communicating between a fragment and an activity – best practices                                    9个
我需要将数据从活动传递到片段.我知道我可以使用bundle,但是一旦我传递数据,我就无法在不调用和再次创建片段的情况下发送数据.

在我的活动中,有些东西可能会被更改,我需要通知我的片段这些更改而不重新创建片段.

解决方法:

在Activity中创建一个接口,并通过接口将数据传递给片段.在片段中实现该接口以获取数据.

例如

MainActivity.class

public class MainActivity extends AppCompatActivity {    DataFromActivityToFragment dataFromActivityToFragment;    @OverrIDe    protected voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.activity_main);        FragmentA fr = new FragmentA();        FragmentManager fm = getFragmentManager();        dataFromActivityToFragment = (DataFromActivityToFragment) fr;        FragmentTransaction fragmentTransaction = fm.beginTransaction();        fragmentTransaction.replace(R.ID.fragment_place, fr);        fragmentTransaction.commit();        final Handler handler = new Handler();        final Runnable r = new Runnable() {            public voID run() {                dataFromActivityToFragment.sendData("Hi");            }        };        handler.postDelayed(r, 5000);    }    public interface DataFromActivityToFragment {        voID sendData(String data);    }}

FragmentA.class

public class FragmentA extends Fragment implements MainActivity.DataFromActivityToFragment {    TextVIEw text;    @Nullable    @OverrIDe    public VIEw onCreateVIEw(LayoutInflater inflater, VIEwGroup container, Bundle savedInstanceState) {        VIEw rootVIEw = inflater.inflate(R.layout.content_main, null);        text = (TextVIEw) rootVIEw.findVIEwByID(R.ID.fragment_text);        return rootVIEw;    }    @OverrIDe    public voID onVIEwCreated(VIEw vIEw, Bundle savedInstanceState) {        super.onVIEwCreated(vIEw, savedInstanceState);    }    @OverrIDe    public voID sendData(String data) {        if(data != null)        text.setText(data);    }}

activity_main.xml中

<linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"    androID:layout_wIDth="match_parent"    androID:layout_height="match_parent"    androID:orIEntation="vertical" >    <linearLayout        androID:ID="@+ID/fragment_place"        androID:layout_wIDth="match_parent"        androID:layout_height="match_parent"        androID:orIEntation="horizontal">    </linearLayout></linearLayout>

content_main.xml

<linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"    androID:layout_wIDth="match_parent"    androID:layout_height="match_parent">    <TextVIEw        androID:ID="@+ID/fragment_text"        androID:layout_wIDth="wrap_content"        androID:layout_height="wrap_content" /></linearLayout>

在上面的例子中,我已经将Runnable用于在创建片段后延迟5秒发送数据.

总结

以上是内存溢出为你收集整理的Android – 如何将数据从活动传递到片段?全部内容,希望文章能够帮你解决Android – 如何将数据从活动传递到片段?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1098387.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存