简体   繁体   English

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

[英]Pass Data from Activity to Fragment in Viewpager Tablayout

I used below code to passing data from Activity to Fragment.我使用下面的代码将数据从 Activity 传递到 Fragment。

Fragment Code片段代码

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;
}

} }

MainActivity Code主要活动代码

   @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");

}

Problem is getArgument() in my fragment is null and i can't get data What should i do?问题是我的片段中的getArgument()null ,我无法获取数据我该怎么办?
Can you help me explain it?你能帮我解释一下吗? Thanks for reading.谢谢阅读。

  1. If you want to pass data from activity to fragment as initial data, you can send data from activity to ViewPagerAdapter, then pass data from ViewPagerAdapter to fragment in getItem() function.如果要将数据从活动传递到片段作为初始数据,可以将数据从活动发送到 ViewPagerAdapter,然后在 getItem() 函数中将数据从 ViewPagerAdapter 传递到片段。 In Activity:在活动中:

    adapter = new ViewPagerAdapter(getSupportFragmentManager(), this,false)); adapter = new ViewPagerAdapter(getSupportFragmentManager(), this,false)); adapter.setData(data);适配器.setData(数据);

In ViewPagerAdapter:在 ViewPagerAdapter 中:

    @Override
public Fragment getItem(int position) {
    switch (position) {
        case 0:
            MyFragment fragment = new MyFragment();
            fragment.setData(data);
            return fragment
    }
}
  1. If you want to pass data from activity to fragment in real time (like updating data), I recommend to use EventBus.如果您想将数据从活动实时传递到片段(例如更新数据),我建议使用 EventBus。 It is a modern and convenient tool to communicate between activity and fragment.它是一种现代便捷的工具,用于在 Activity 和 Fragment 之间进行通信。 Check it at https://github.com/greenrobot/EventBushttps://github.com/greenrobot/EventBus检查

Firstly, in the method newInstance of class StoryDetailFragmentInfo , you write these: bundle.putString(getData,"Message");首先,在类StoryDetailFragmentInfo newInstance方法中,你写这些: bundle.putString(getData,"Message"); while leave paramater alone.而不要管paramater So you need change所以你需要改变

 bundle.putString(getData,"Message"); 

to

 bundle.putString(getData,paramater);

Secondly, you try to get values from arguments from fragment by the key 'AdapterStoryDetailViewPager.idData', but this key is different from the key which you used to save value.其次,您尝试通过键“AdapterStoryDe​​tailViewPager.idData”从片段的参数中获取值,但此键与您用于保存值的键不同。 So you need to change所以你需要改变

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

to

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

After these two steps, you would get the right value.经过这两个步骤,您将获得正确的值。

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

相关问题 如何使用 TabLayout 将数据从 Activity 传递到 Fragment - How to pass data from Activity to Fragment with TabLayout Android-使用TabLayout,ViewPager将字符串数据从Fragment传递到Activity - Android - passing string data from Fragment to Activity using TabLayout, ViewPager android - 将数据从 Activity 传递到 ViewPager 中的 Fragment - android - Pass data from Activity to Fragment in ViewPager 如何将数据从活动传递到viewpager内的Fragment - How to pass data from activity to Fragment which is inside viewpager 通过FragmentPagerAdapter将数据从Activity传递到ViewPager的片段 - Pass data from Activity to Fragment of ViewPager via FragmentPagerAdapter 将数据从活动传递到viewPager片段的推荐方法 - Recommended way to pass data from activity to viewPager fragment 将数据从片段传递到viewpager - Pass data from fragment to viewpager Android活动->片段->带有tabLayout的viewPager不起作用 - Android activity -> fragment -> viewPager with tabLayout not working Android:片段或活动中的tablayout / viewpager片段 - Android: tablayout/viewpager fragments within fragment or activity 将OnclickListener从活动传递到ViewPager中的片段 - Pass OnclickListener from activity to fragment inside ViewPager
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM