这是我的代码 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。任何人都可以帮助我。
答案 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();
}
在fragment
上onActivityCreated
添加
Bundle bundle = getArguments();
String value = bundle.getString("my_key");
Toast.makeText(getActivity(),value,Toast.LENGTH_SHORT).show();