想要将数据从MainActivity传递到片段

时间:2014-09-18 08:26:43

标签: android android-fragments

这是我的代码 MainActivity.java

ViewFragment fr = new ViewFragment();
Bundle bundle = new Bundle();
String val="sonali";
bundle.putString("myname", val);
fr.setArguments(bundle);
return fr;

在我的ViewFragment.java中,用于检索onActivityCreated()中的数据的代码是..

Bundle bundle = getArguments();
String val = bundle.getString("myname");
if (val == null) {
   Toast.makeText(getActivity(), "arguments is null " , Toast.LENGTH_LONG).show();
} else {
   Toast.makeText(getActivity(), "text " + val , Toast.LENGTH_LONG).show();
} 

它给出了null。任何人都可以帮助我。

3 个答案:

答案 0 :(得分:0)

您还可以为片段设置新的实例方法(我认为这是最简单的方法),用户名可以保存在用户设置(SharedPref)中。

static final ViewFragment newInstance(String myName) {
    //TODO: Save myName
}}

答案 1 :(得分:0)

a)活动 - >片段

在您的活动中:创建一个包并使用

     fragment.setArguments(bundle)
片段中的

:使用

     Bundle bundle = getArguments()

2)片段 - >活性

在你的片段中:使用getter和setter方法创建un接口(回调方法) 在您的活动中:实现界面 3)片段 - >活性

在您的活动中:创建公共getter和setter或其他方法 在您的片段中:使用以下方法调用公共活动getter,setter或其他方法:

    getActivity().getSomething(), getActivity().setSomething(args) or getActivity().someMethod(args)

4)活动 - >片段

在你的片段中:创建一个公共方法

在您的活动中:调用活动片段公共方法:

    getSupportFragmentManager().findFragmentById(R.id.your_fragment).publicMethod(args)

答案 2 :(得分:0)

我试过了&它工作正常。在活动onCreate方法中添加

Bundle bundle = new Bundle();
    bundle.putString("my_key","my_value");
    ViewFragment fg = new ViewFragment();
    fg.setArguments(bundle);
    if (savedInstanceState == null) {
        getFragmentManager().beginTransaction()
                .add(R.id.container, fg)
                .commit();
    }

fragmentonActivityCreated添加

Bundle bundle = getArguments();
        String value = bundle.getString("my_key");
        Toast.makeText(getActivity(),value,Toast.LENGTH_SHORT).show();