android - 在 fragment 上输入 EditText 并填充所有其他 fragment

标签 android android-fragments android-edittext android-viewpager

我已经实现了 Android Training Site 中的 Android 教程到目前为止一切正常。

Fragment 内部,我添加了一个 EditText 字段,用户可以在其中输入简单的文本字符串。

我想要实现的是:如果用户输入了某些内容,然后向左或向右滑动,则输入也应该“复制”新 fragment 。

在训练中,我有一个 ScreenSlidePageFragment.java 类和一个 ScreenSlideActivity.java 类。

我在 ScreenSlidePageFragment 中实现了一个接口(interface),as mentioned here :

Communicator mCallback;

public interface Communicator {
    void sendData(String inpString);
}

@Override
public void onAttach(Context context) {
    super.onAttach(context);
    try {
        mCallback = (Communicator) context;
    } catch (ClassCastException e) {
        throw new ClassCastException(context.toString() + "must Implement OnEditChangedListener");
    }
}

但最后,我只是设法在 ScreenSlideActivity 上收到它。如何更新指定的 fragment ? 在 ScreenSlideActivity 中,我尝试将其发送回新 fragment 。

@Override
public void sendData(String inpString) {
       WHATFRAGMENT.changeData(inpString);
}

但是我如何访问在 ScreenSlidePagerAdapter 中创建的另一个 (WHATFRAGMENT):

 @Override
 public Fragment getItem(int position) {
     return NewReservationSlidePageFragment.create(position);
 }

我需要创建整个 fragment 并覆盖新位置吗?或者甚至有必要解决 Activity 问题吗?是否可以以某种方式使用FragmentTransaction

最简单的解决方案是什么?

最佳答案

您可以使用界面public void setUserVisibleHint(boolean isVisibleToUser)

来实现

在您的界面中再添加一种方法,如下所示,

public interface Communicator {
    void sendData(String inpString);
    String getData();
}

并在您的 Activity 中全局创建一个字符串变量来存储该值。

并分配来自 sendData 的数据

@Override
public void sendData(String inpString) {
    this.value = inpString;
       //WHATFRAGMENT.changeData(inpString);
}

并在您的 Activity 中也实现 getData

@Override
public void getData() {
    return this.value;
}

在 fragment 中添加 setUserVisibleHint

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    if(isVisibleToUser) {
        mCallback.sendData("[string from your edit text]");
    } else {
        String value = mCallback.getData();
    }
}

现在您可以看到您在一个 fragment 中编辑的数据可以显示在其他可见 fragment 中。

关于android - 在 fragment 上输入 EditText 并填充所有其他 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45509569/

相关文章:

android - 如何在 Android 中编辑时在编辑文本中显示清除按钮

android - 寻找适用于 Android 2.3 ARM 平台的 iptables 二进制文件?

java - 在fragment Activity中添加工具栏

java - Android - 在 Activity 中更新工具栏标题,同时使用 fragment 处理后退导航

android - 更改 EditText setError() 的字体系列

Android EditText 值到整数

android - 以编程方式设置 PercentageRelativeLayout 边距

java - java中的定时器有多精确?

android - 在android studio中添加图像源的问题

java - Android - 在Fragment中显示WebView