旋转项值在旋转后消失



我有一个简单的"材料纺纱器";实现:

<com.google.android.material.textfield.TextInputLayout
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox.ExposedDropdownMenu"
android:layout_width="match_parent" 
android:layout_height="wrap_content">
<AutoCompleteTextView
android:id="@+id/filled_exposed_dropdown"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="none"/>
</com.google.android.material.textfield.TextInputLayout>

和我的fragment onCreate方法填充列表

AutoCompleteTextView editTextFilledExposedDropdown;
ArrayAdapter<String> adapter = null;
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
String[] type = new String[] {"Bed-sitter", "Single", "1- Bedroom", "2- Bedroom","3- Bedroom"};
adapter =new ArrayAdapter<>( getContext(),R.layout.dropdown_menu_popup_item, type);
editTextFilledExposedDropdown = view.findViewById(R.id.filled_exposed_dropdown);
editTextFilledExposedDropdown.setAdapter(adapter);
}

只要我不选择一个项目并旋转手机,代码就可以完美地工作。一旦我旋转手机,onCreate方法再次被调用,但由于某种原因,唯一可用的项目是我之前选择的项目。菜单没有显示所有其他项目。

原因可能是什么?我故意重新填充数组适配器,只是为了确保当我旋转手机时使用相同的对象。

使用自定义视图。这是一个来自materialdesign类的bug,不幸的是还没有修复:

public class ExposedDropdownMenu extends MaterialAutoCompleteTextView {
public ExposedDropdownMenu(@NonNull @NotNull Context context) {
super(context);
}
public ExposedDropdownMenu(@NonNull @NotNull Context context, @Nullable @org.jetbrains.annotations.Nullable AttributeSet attributeSet) {
super(context, attributeSet);
}

public ExposedDropdownMenu(@NonNull @NotNull Context context, @Nullable @org.jetbrains.annotations.Nullable AttributeSet attributeSet, int defStyleAttr) {
super(context, attributeSet, defStyleAttr);
}
@Override
public boolean getFreezesText() {
return false;
}
}

在onResume()方法中设置适配器,它会正常工作。

@override
public void onResume(){
super.onResume()
String[] type = new String[] {"Bed-sitter", "Single", "1- Bedroom", "2- Bedroom","3- Bedroom"};
adapter =new ArrayAdapter<>( getContext(),R.layout.dropdown_menu_popup_item, type);
editTextFilledExposedDropdown = view.findViewById(R.id.filled_exposed_dropdown);
editTextFilledExposedDropdown.setAdapter(adapter);l̥
}

相关内容

  • 没有找到相关文章

最新更新