【问题标题】:Send Data from Activity to TabLayout fragments将数据从 Activity 发送到 TabLayout 片段
【发布时间】:2017-10-19 18:59:35
【问题描述】:

我正在设计一个我遇到问题的应用程序,

我在 MainActivity.class 中有一个 String date; 并且有两个片段。

InboundDate & OutboundDate

我是通过 TabLayout 和 ViewPager 设计的,当我向片段发送日期并且必须通过两个片段的 POST 请求调用 WebServices 时遇到问题。

下面是我在 MainActivity.class 中的日期,我如何将此日期发送到两个片段并调用 jsonRequest 并将 Recyclerview 设置为两个片段或者如果我将 jsonRequest 调用到 MainActivity 本身,那么我如何向两个片段显示碎片。

 date = getIntent().getStringExtra("DATE");
    Log.e("DATE",""+date);

ViewPager & TabLayout 代码:

 private void setupViewPager(ViewPager viewPager) {
    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
    adapter.addFrag(new InBoundDate(),"INBOUND");
    adapter.addFrag(new OutBoundDate(),"OUTBOUND");
    viewPager.setAdapter(adapter);

}

//viewPager adapter ----- inbound & outbound
public class ViewPagerAdapter extends FragmentPagerAdapter {
    private final List<Fragment> mFragmentList = new ArrayList<>();
    private final List<String> mFragmentTitleList = new ArrayList<>();

    public ViewPagerAdapter(FragmentManager manager) {
        super(manager);
    }

    @Override
    public android.support.v4.app.Fragment getItem(int position) {
        return mFragmentList.get(position);
    }

    @Override
    public int getCount() {
        return mFragmentList.size();
    }

    public void addFrag(android.support.v4.app.Fragment fragment, String title) {
        mFragmentList.add(fragment);
        mFragmentTitleList.add(title);
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return mFragmentTitleList.get(position);
    }
}

【问题讨论】:

    标签: android android-viewpager android-tablayout


    【解决方案1】:

    我通过互联网搜索得到了这个问题的答案。 在这个问题中,我必须将字符串发送到 MainActivity.java 到同一 Activity 上存在的片段。

    注意:我们必须创建捆绑对象,并且必须通过捆绑发送字符串(任何数据类型)。

    我有两个片段 InBoundDateOutBoundDate

    MainActivity.java中的setupViewpager()

     private void setupViewPager(ViewPager viewPager) {
        ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
    
        //bundle
        bundle =new Bundle();
        bundle.putString("DATE","2017-10-19");
    
        InBoundDate frag_in = new InBoundDate();
        OutBoundDate frag_out = new OutBoundDate();
    
        frag_in.setArguments(bundle);
        frag_out.setArguments(bundle);
        adapter.addFrag(frag_in,"INBOUND");
        adapter.addFrag(frag_out,"OUTBOUND");
        viewPager.setAdapter(adapter);
    
    }
    

    ViewPager 适配器:

      //viewPager adapter ----- inbound & outbound
    public class ViewPagerAdapter extends FragmentPagerAdapter {
        private final List<Fragment> mFragmentList = new ArrayList<>();
        private final List<String> mFragmentTitleList = new ArrayList<>();
    
        public ViewPagerAdapter(FragmentManager manager) {
            super(manager);
        }
    
        @Override
        public android.support.v4.app.Fragment getItem(int position) {
            return mFragmentList.get(position);
        }
    
        @Override
        public int getCount() {
            return mFragmentList.size();
        }
    
        public void addFrag(android.support.v4.app.Fragment fragment, String title) {
            mFragmentList.add(fragment);
            mFragmentTitleList.add(title);
        }
    
        @Override
        public CharSequence getPageTitle(int position) {
            return mFragmentTitleList.get(position);
        }
    }
    

    在你的 Fragments 中通过这种方式获取字符串:

        String dateTxt;
        private Bundle bundle;
    
        //within OncreateView
         bundle = this.getArguments();
            dateTxt = bundle.getString("DATE");
            Log.e("DATE_FRAG_INBOUND",""+dateTxt);
    

    【讨论】:

    • 解释得很好!
    • 谢谢@DanyKamuhanda
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-07
    • 1970-01-01
    • 1970-01-01
    • 2014-06-02
    相关资源
    最近更新 更多