Android 如何从VIewpager中的其他片段获取信息
我正在Android开发者网站上学习本教程 我的情况是 我有N个片段,代表我的viewpager中的每个页面,每个片段都是不同的,并且有自己的布局。这就是为什么我对每种类型的片段都有不同的类 我想在前几页中获得不同edittext的值,但在最后一页中,我想处理这些信息Android 如何从VIewpager中的其他片段获取信息,android,android-fragments,android-viewpager,Android,Android Fragments,Android Viewpager,我正在Android开发者网站上学习本教程 我的情况是 我有N个片段,代表我的viewpager中的每个页面,每个片段都是不同的,并且有自己的布局。这就是为什么我对每种类型的片段都有不同的类 我想在前几页中获得不同edittext的值,但在最后一页中,我想处理这些信息 我不知道如何解决这个问题,您可以使用Intent或Bundle将信息从一个片段传递到其他片段。处理第二个片段中的信息,并再次使用Intent或Bundle将处理结果传递给第一个片段。 例子: 如@calvinfly所述,尝试实现
我不知道如何解决这个问题,您可以使用Intent或Bundle将信息从一个片段传递到其他片段。处理第二个片段中的信息,并再次使用Intent或Bundle将处理结果传递给第一个片段。 例子:
如@calvinfly所述,尝试实现一个接口。因为每个片段都是唯一的,并且彼此不了解,所以它们之间的唯一链接是创建它们的适配器。因此,您可以在片段及其适配器之间设置回调:
public class DummyFragment extends Fragment {
private OnEditTextSendListener mListener;
...
public interface OnSendTextListener { // this requires the adapter to implement sendMessage()
public void sendMessage(CharSequence msg);
}
public void setOnSendTextListener(OnSendTextListener listener) {
mListener = listener;
}
public View onCreateView( ... ) {
...
(EditText) editText = (EditText) rootView.findViewById(R.id.editText);
editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
mListener.sendMessage(v.getText());
}
}
}
}
注意:如果需要,指定侦听特定的actionId,例如EditorInfo.IME\u ACTION\u SEND
然后在寻呼机适配器中:
public class SectionsPagerAdapter extends FragmentStatePagerAdapter
implements DummyFragment.OnSendTextListener {
private String mReceivedMessage;
// the required method to implement from the interface
public void sendMessage(CharSequence msg) {
mReceivedMessage = msg.toString();
notifyOnDataSetChanged(); // tell the adapter views need to be updated
}
}
从这里开始,当适配器调用setOnSendTextListener并将其设置为自身(如下所示)时,当您对EditText执行操作时,适配器将接收EditText输入。剩下的唯一一件事就是将此消息传递回相应的片段,可能是在getItem期间,作为捆绑包中的参数之一
public Fragment getItem(int position) {
Fragment fragment;
Bundle args = new Bundle();
switch (position) {
case 0:
fragment = new DummyFragment();
((DummyFragment) fragment).setOnSendTextListener(this);
break;
case 1:
// your other fragment
case 2:
// your other fragment that wants the message from 1st fragment
args.putString(DummyOtherFragment.ARG_DUMMYFRAGMENT_MSG, mReceivedMessage);
break;
default:
}
// other arguments here
fragment.setArguments(args);
return fragment;
}
希望这有帮助-更多信息,请参阅Android开发者指南
旁注:您可能会遇到这样的问题:适配器正确地接收回调信息,但它传递数据的片段不会重新加载数据,即使您正在调用notifyOnDataSetChanged。这是一个完全不同的问题,我想让您进一步阅读。在您发布的教程中,我认为很明显,您必须实现getItem override方法。 在该网页中查找文本: 创建扩展FragmentStatePagerAdapter抽象的类 类并实现getItem 扩展片段或分页器的想法很常见。我为PagerAdapter做了这件事,我很高兴。尝试使用类似的界面