【问题标题】:passing data between fragments when swiped滑动时在片段之间传递数据
【发布时间】:2015-09-09 12:33:51
【问题描述】:

我是 android 的新手。我正在尝试开发一个包含带有 Tabs 的 Viewpager 的应用程序。我的目标是将在第一个片段(即 tab1)中输入的数据传递给第二个片段。我很困惑如何获取数据在 FragmentA 中并在 FragmentB 中显示它,除了我的 viewpager 在 Mainactivity 中。

我的一些代码是

mviewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

          //  Toast.makeText(getApplicationContext(),""+servloc,Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onPageSelected(int position) {
            mviewpager.setCurrentItem(position);
            int index = mviewpager.getCurrentItem();
            if(position==0) {
                Fragmentpageadapter adapter = (Fragmentpageadapter) mviewpager.getAdapter();

                CreateInspectionFragmentA ca= (CreateInspectionFragmentA) adapter.getFragment(index);
            }

上面的代码是viewpage setonpagechangelistener..

我的页面适配器是

@Override
public Fragment getItem(int position) {
    switch (position) {
        case 0:
          CreateInspectionFragmentA createInspectionFragmenta=new CreateInspectionFragmentA();
            mPageReferenceMap.put(position, createInspectionFragmenta);
  return createInspectionFragmenta;
        case 1:
            CreateInspectionFragmentB createInspectionFragmentb = new CreateInspectionFragmentB();
          //  createInspectionFragmentb.deliverData(data1,data2);
         mPageReferenceMap.put(position,createInspectionFragmentb);
              return createInspectionFragmentb;

        case 2:
            CreateInspectionFragmentC createInspectionFragmentc = new CreateInspectionFragmentC();
             mPageReferenceMap.put(position,createInspectionFragmentc);
            return createInspectionFragmentc;
        default:
            return null;
    }
   }

我的要求是将我在 FragmentA 中输入的数据传递到 edittext 中,以便在滑动时在 FragmentB 中看到,但在单击按钮时不显示。

可能性: 1.如果有办法在 onpageselected 中获取 FragmentA 的 UI 控件,我可以绑定 EditText 视图并获取数据。 2.使用捆绑。 请帮我解决这个问题。 提前致谢。

【问题讨论】:

  • 我在这里回答了类似的问题,stackoverflow.com/questions/32344885/… 如果您需要进一步的帮助,请告诉我们
  • 这并没有解决我的问题。但感谢您的帮助。我只需要从 FragmentA 中的 Edittext 获取值,然后将其传递给 Fragment B。你的意思是我写从哪里获取值编辑文本。对不起,我不明白。
  • 在CreateInspectionFragmentA getData() 方法中从EditText 返回字符串值,在CreateInspectionFragmentB setData(String value) 方法中传递String 值。清楚了吗?
  • 需要在onPageSelected()方法中调用getData()和setData()方法

标签: android android-layout android-fragments tabs android-viewpager


【解决方案1】:

你可以试试这个。在 FragmentA 你把这段代码

    private static NameOfTheFragment instance = null;


    public static NameOfTheFragment getInstance() {
       return instance;
    }

然后创建一个函数来返回你想要的,比如一个列表视图

    public ListView getList(){
       return list; 
    }

然后在 FragmentB 中你在 onCreateView 中执行此操作

    ListView list = NameOfTheFragment.getInstance().getList();

然后你在片段 B 中显示列表

【讨论】:

  • 我不想使用加载器概念,谢谢。我想在 onpageselected 方法中获得没有 layoutinflator 的 UI 控件。我认为的一种方法是通过片段实例。
  • 我理解你的逻辑,但是当我滑动 viewPager 时,我需要从 Fragment A 中存在的 UI 元素获取所有数据,在这种情况下,我应该从哪里捕获 Ui 中的数据(存在于 Fragment一种)。你能把同样的代码发给我吗?
  • 你要传递什么样的数据?
  • 字段数据。好的,我已经通过仅从 Activity 获取片段的控制解决了这个问题。我从 viewpager 的 addonpagechangelistener 中的适配器获取视图并绑定了 view.now 的那些控件,我可以将滑动时的数据传递到下一页。
猜你喜欢
  • 2019-10-05
  • 1970-01-01
  • 2016-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多