我已经从Android Training Site实施Android教程,并且一切工作到目前为止。在片段上输入EditText,并填写所有其他片段
在Fragment
的内部,我添加了一个EditText
字段,用户可以在其中输入一个简单的文本字符串。
我想要实现的是:如果用户输入了一些内容,然后向左或向右滑动,则输入也应该“复制”新片段。
在培训中,我有一个ScreenSlidePageFragment.java类和一个ScreenSlideActivity.java类。
我实现一个接口在ScreenSlidePageFragment,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。我如何更新指定的片段? 在ScreenSlideActivity中,我试图将它发送回新的片段。
@Override
public void sendData(String inpString) {
WHATFRAGMENT.changeData(inpString);
}
但怎样访问另一个(WHATFRAGMENT),这是在ScreenSlidePagerAdapter创建:
@Override
public Fragment getItem(int position) {
return NewReservationSlidePageFragment.create(position);
}
我需要创建一个完整的片段,并覆盖新位置?还是有必要解决该活动?以某种方式可以使用FragmentTransaction
吗?
什么是最简单的解决方案?
'getData()'方法不是必须的。每个'Fragment'将在从'FragmentManager'中删除时调用'sendData()',可能在'onPause()'中。 “Activity”可能实现了接口并将数据转发到下一个“Fragment”。 –
如果您使用视图寻呼机** onPause **并且** OnResume **在当时不会接听电话,我们应该只使用** setUserVisibleHint **方法。 –
@MuthukrishnanRajendran非常感谢,现在它工作。以前不知道'setUserVisibleHint()'。 但是在某一时刻,我得到了一个可能会让用户感到困惑的行为:如果文本字段在其他片段之一上发生了更改,并且被刷回,则数据不会被覆盖。它仍然是“旧”字符串,即使我尝试清除它之前:'myEditTxt.getText()。clear()' – a2hur