我有两个片段:(1)片段1(2)片段2。
片段1
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中获取此数据?
7条答案
按热度按时间b1uwtaje1#
只需在
Frag2
的onCreateView()
方法中调用getArguments()
即可:编辑:
最好的做法是在
onCreate
方法中读取和保存参数。在onCreateView
中这样做更糟糕,因为每次fragment创建视图时都会调用onCreateView
(例如每次fragment从backstack弹出时)idfiyjo82#
例如:添加数据:-
例如:获取数据:-
qybjjes13#
您有一个名为
getArguments()
的方法,它属于Fragment
类。nqwrtyyt4#
在片段1中:
在片段2中:
就是这么简单。
lzfw57am5#
以正确的方式示例化片段!
getArguments()
setArguments()
方法在使用静态方法示例化Fragment时似乎非常有用。即
Myfragment.createInstance(String msg)
怎么做呢?
片段代码
假设你想在创建一个示例时传递一个字符串,这就是你要做的。
阅读更多
1)Why Myfragment.getInstance(String msg) is preferred over new MyFragment(String msg)?
2)*************************************************************************************************************************************************************************************************
gjmwrych6#
对于那些像我一样希望发送原语之外的对象的人来说,由于不能在片段中创建参数化构造函数,只需在片段中添加一个setter访问器,这对我来说总是有效的。
okxuctiv7#
如果您使用导航组件和导航图,请创建一个如下所示的包
那么当导航到另一个片段时,使用以下代码:
并且当你到达目的地片段时,你可以使用
或