我在ViewPager片段中遇到AutoCompleteTextView问题。 AutoCompleteTextView数据是动态加载的,并且工作正常,但是如果你足够快地滑动到另一个片段(ViewPager中的另一个页面),那么在加载数据之前,你会得到同时刷过的片段中显示的AutoCompleteTextView下拉列表。在我的例子中,我在ViewPager中有3个片段,其中第三个包含AutoCompleteTextView,如果你快速刷到第二个,有时你会在第二个页面上下拉,而如果你刷到第一个,它可以正常工作,因为在那种情况下第三个片段被释放(setOffscreenPageLimit默认为1,所以你总是在内存中有一个片段以获得更好的用户体验)。 有没有人遇到同样的问题?
答案 0 :(得分:3)
我为我的案例找到了一个解决方案,不确定它是否适用于那些在其他ViewPager片段上有AutoCompleteTextView或EditText的人。但无论如何我这样做了:
在包含viewPager的MainActivity中我添加了clearFocus:
mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
if (position == 0 || position == 1) {
if (getCurrentFocus() != null) {
getCurrentFocus().clearFocus();
}
}
}
@Override
public void onPageScrollStateChanged(int state) {
if (state == ViewPager.SCROLL_STATE_IDLE) {
hideKeyboard();
}
}
});
在第三个片段中,我在AutoCompleteTextView上添加了requestFocus,当打开该页面时需要有焦点:
mAutoCompleteTextView.requestFocus();
希望它有助于某人