![](/img/trans.png)
[英]How to pass data from Activity to Fragment with TabLayout
[英]Pass Data from Activity to Fragment in Viewpager Tablayout
我使用下面的代码将数据从 Activity 传递到 Fragment。
片段代码
public class StoryDetailFragmentInfo extends Fragment {
View view;
TextView txtDescrible;
final static String getData = "abc";
public static StoryDetailFragmentInfo newInstance(String paramater){
Bundle bundle = new Bundle();
bundle.putString(getData,"Message");
StoryDetailFragmentInfo fragmentInfo = new StoryDetailFragmentInfo();
fragmentInfo.setArguments(bundle);
return fragmentInfo;
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(getArguments()!=null){
String test = getArguments().getString(getData);
}
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
view = inflater.inflate(R.layout.story_detail_fragment_info_layout, container, false);
txtDescrible = view.findViewById(R.id.txt_describleDetail);
return view;
}
}
主要活动代码
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.story_detail_layout);
addControls();
loadData();
intentData();
fillDataToView();
}
private void intentData() {
StoryDetailFragmentInfo.newInstance("Hello babe");
}
问题是我的片段中的getArgument()
为null
,我无法获取数据我该怎么办?
你能帮我解释一下吗? 谢谢阅读。
如果要将数据从活动传递到片段作为初始数据,可以将数据从活动发送到 ViewPagerAdapter,然后在 getItem() 函数中将数据从 ViewPagerAdapter 传递到片段。 在活动中:
adapter = new ViewPagerAdapter(getSupportFragmentManager(), this,false)); 适配器.setData(数据);
在 ViewPagerAdapter 中:
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
MyFragment fragment = new MyFragment();
fragment.setData(data);
return fragment
}
}
首先,在类StoryDetailFragmentInfo
newInstance
方法中,你写这些: bundle.putString(getData,"Message");
而不要管paramater
。 所以你需要改变
bundle.putString(getData,"Message");
到
bundle.putString(getData,paramater);
其次,您尝试通过键“AdapterStoryDetailViewPager.idData”从片段的参数中获取值,但此键与您用于保存值的键不同。 所以你需要改变
String test = getArguments().getString(AdapterStoryDetailViewPager.idData);
到
String test = getArguments().getString(getData);
经过这两个步骤,您将获得正确的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.