繁体   English   中英

在 Viewpager Tablayout 中将数据从 Activity 传递到 Fragment

[英]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 ,我无法获取数据我该怎么办?
你能帮我解释一下吗? 谢谢阅读。

  1. 如果要将数据从活动传递到片段作为初始数据,可以将数据从活动发送到 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
    }
}
  1. 如果您想将数据从活动实时传递到片段(例如更新数据),我建议使用 EventBus。 它是一种现代便捷的工具,用于在 Activity 和 Fragment 之间进行通信。 https://github.com/greenrobot/EventBus检查

首先,在类StoryDetailFragmentInfo newInstance方法中,你写这些: bundle.putString(getData,"Message"); 而不要管paramater 所以你需要改变

 bundle.putString(getData,"Message"); 

 bundle.putString(getData,paramater);

其次,您尝试通过键“AdapterStoryDe​​tailViewPager.idData”从片段的参数中获取值,但此键与您用于保存值的键不同。 所以你需要改变

String test = getArguments().getString(AdapterStoryDetailViewPager.idData);

String test = getArguments().getString(getData);

经过这两个步骤,您将获得正确的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM