如果在ViewPager

时间:2017-02-26 12:25:42

标签: android android-viewpager fragment autocompletetextview

我在ViewPager片段中遇到AutoCompleteTextView问题。 AutoCompleteTextView数据是动态加载的,并且工作正常,但是如果你足够快地滑动到另一个片段(ViewPager中的另一个页面),那么在加载数据之前,你会得到同时刷过的片段中显示的AutoCompleteTextView下拉列表。在我的例子中,我在ViewPager中有3个片段,其中第三个包含AutoCompleteTextView,如果你快速刷到第二个,有时你会在第二个页面上下拉,而如果你刷到第一个,它可以正常工作,因为在那种情况下第三个片段被释放(setOffscreenPageLimit默认为1,所以你总是在内存中有一个片段以获得更好的用户体验)。 有没有人遇到同样的问题?

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();

希望它有助于某人