我已经搜索了很多并尝试了许多解决方法 - 但似乎都没有起作用。
在我的片段中,我有一个带有标准ArrayAdapter的AutoCompleteTextView,在onActivityCreated()函数中动态填充(如下所示)。
当首次添加该片段时,一切正常。然而,当我使用“返回”按钮将此带自动完成的片段替换为另一个片段,并返回时,我遇到了问题,即“自动完成”停止像“自动完成”一样工作,因此如果我现在在其中输入,但我不再获得“建议下拉菜单”。
需要注意的一件事是,我不使用设备softInput进行输入 - 因为我只需要输入手机号码 - 我有自己的自定义键显示在屏幕上。但我不认为它会创建任何问题。
附上2个截图 - 1)在替换片段之前自动完成正常工作 2)替换片段并返回后,自动完成停止显示建议(请注意,我在这里再次键入了“981”)。 替换片段之前 替换片段并返回后 - 再次键入981 欢迎任何帮助!!
在我的片段中,我有一个带有标准ArrayAdapter的AutoCompleteTextView,在onActivityCreated()函数中动态填充(如下所示)。
当首次添加该片段时,一切正常。然而,当我使用“返回”按钮将此带自动完成的片段替换为另一个片段,并返回时,我遇到了问题,即“自动完成”停止像“自动完成”一样工作,因此如果我现在在其中输入,但我不再获得“建议下拉菜单”。
需要注意的一件事是,我不使用设备softInput进行输入 - 因为我只需要输入手机号码 - 我有自己的自定义键显示在屏幕上。但我不认为它会创建任何问题。
附上2个截图 - 1)在替换片段之前自动完成正常工作 2)替换片段并返回后,自动完成停止显示建议(请注意,我在这里再次键入了“981”)。 替换片段之前 替换片段并返回后 - 再次键入981 欢迎任何帮助!!
// 'mCustMobileNums' is a singleton class which fetches strings stored in a DB table.
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
Log.d(TAG, "In onActivityCreated");
super.onActivityCreated(savedInstanceState);
if (mCustMobileNums==null) {
mCustMobileNums = CustomerMobileNums.getInstance(getActivity().getApplicationContext());
}
initInputCustMobile();
}
private void initInputCustMobile() {
if(mAdapter==null) {
Log.d(TAG, "Creating autocomplete adapter instance.");
mAdapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_dropdown_item_1line);
mAdapter.addAll(mCustMobileNums.getCollection());
mAdapter.setNotifyOnChange(false);
}
mInputCustMobile.setAdapter(mAdapter);
Log.d(TAG, "Initialized autocomplete adaptor: " + mAdapter.getCount());
}
// This function is called when I have insert new entry in the data set
public void updateAutoCompleteAdaptor(String mobileNum) {
Log.d(TAG,"In updateAutoCompleteAdaptor");
// add in memory and db
// will return TRUE if entry was not already available and added successfully
if( mCustMobileNums.addCustMobileNum(mobileNum) ) {
// recreate with sorted set
mAdapter.clear();
mAdapter.addAll(mCustMobileNums.getCollection());
mAdapter.notifyDataSetChanged();
Log.d(TAG,"Updated autocomplete adaptor: "+mAdapter.getCount());
}
}