我有2个片段:(1)Frag1(2)Frag2。
bundl = new Bundle();
bundl.putStringArrayList("elist", eList);
Frag2 dv = new Frag2();
dv.setArguments(bundl);
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.the_fragg,dv);
ft.show(getFragmentManager().findFragmentById(R.id.the_fragg));
ft.addToBackStack(null);
ft.commit();
如何在Frag2中获取此数据?
答案 0 :(得分:185)
只需使用getArguments()
的{{1}}方法拨打Frag2
:
onCreateView()
答案 1 :(得分:36)
例如:添加数据: -
Bundle bundle = new Bundle();
bundle.putString("latitude", latitude);
bundle.putString("longitude", longitude);
bundle.putString("board_id", board_id);
MapFragment mapFragment = new MapFragment();
mapFragment.setArguments(bundle);
例如:获取数据: -
String latitude = getArguments().getString("latitude")
答案 2 :(得分:23)
您有一个名为getArguments()
的方法属于Fragment
类。
答案 3 :(得分:6)
:
Bundle b= new Bundle();
b.putStringArray("arrayname that use to retrive in frag2",StringArrayObject);
Frag2.setArguments(b);
Frag2中的:
Bundle b=getArguments();
String [] stringArray=b.getStringArray("arrayname that passed in frag1");
就这么简单。
答案 4 :(得分:3)
对于像我这样想要发送原语以外的对象的人, 因为您无法在片段中创建参数化构造函数,只需在片段中添加一个setter访问器,这对我来说总是有效。
答案 5 :(得分:1)
getArguments()
setArguments()
方法似乎很有用 使用静态方法实例化片段。
即Myfragment.createInstance(String msg)
该怎么做?
片段代码
public MyFragment extends Fragment {
private String displayMsg;
private TextView text;
public static MyFragment createInstance(String displayMsg)
{
MyFragment fragment = new MyFragment();
Bundle args = new Bundle();
args.setString("KEY",displayMsg);
fragment.setArguments(args); //set
return fragment;
}
@Override
public void onCreate(Bundle bundle)
{
displayMsg = getArguments().getString("KEY"): // get
}
@Override
public View onCreateView(LayoutInlater inflater, ViewGroup parent, Bundle bundle){
View view = inflater.inflate(R.id.placeholder,parent,false);
text = (TextView)view.findViewById(R.id.myTextView);
text.setText(displayMsg) // show msg
returm view;
}
}
假设您要在创建实例时传递字符串。这个 是你将如何做的。
MyFragment.createInstance("This String will be shown in textView");
1) Why Myfragment.getInstance(String msg) is preferred over new MyFragment(String msg)?
2) Sample code on Fragments
答案 6 :(得分:-1)
在 onCreateView ()方法中调用 getArguments