【问题标题】:How to pass data from activity to Fragment which is inside viewpager如何将数据从活动传递到视图页面内的片段
【发布时间】:2018-03-11 19:44:05
【问题描述】:

我有一个包含 3 个选项卡的选项卡活动。

我的活动中有一个 edittext 和 button,片段中有一个 textview。

每当我需要更改片段 textview 时,我只需在 edittext 中添加一些文本,然后单击按钮。该文本应出现在片段中。 在这里我无法使用 setArguments。

【问题讨论】:

    标签: android interface android-viewpager fragment android-tabactivity


    【解决方案1】:

    如果您使用 ViewPager 呈现片段,请在您的父 Activity 中使用此代码。

    if(viewPager.getCurrentItem() == 1) //First fragment
    {
         FragmentOne frag1 = (FragmentOne)viewPager.getAdapter().instantiateItem(viewPager, viewPager.getCurrentItem());
         frag1.textview.setText(yourText);
    }
    

    【讨论】:

      【解决方案2】:

      Otto 的 EventBus 来救援。 我正好有这种情况要处理。在我的情况下,我需要在带有锁定滑动的查看器内触发片段更改。所以

      分级:

      // EventBus
      implementation 'org.greenrobot:eventbus:3.0.0'
      

      创建一个事件,该事件将从活动传递到片段

      public class FragmentChangeEvent {
      public int fragmentToBeChanged;
       //here you can define variables of your choosing, just make sure you're including them into the constructor of the event.
      public FragmentChangeEvent(int fragmentToBeChanged) {
          this.fragmentToBeChanged = fragmentToBeChanged;
          }
      }
      

      从活动中触发事件

        EventBus.getDefault().post(new FragmentChangeEvent(1));
      

      最后让你的片段知道总线和事件

      @Subscribe(threadMode = ThreadMode.MAIN)
      public void onChangeFragmentEvent(FragmentChangeEvent event) {
        //do your work here.
         }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-23
        相关资源
        最近更新 更多