gpt4 book ai didi

Android微调器在旋转时表现得很奇怪

转载 作者:行者123 更新时间:2023-11-29 01:35:12 25 4
gpt4 key购买 nike

我有一个 fragement,里面有各种 Spinners。为了让这些微调器显示初始(不可选择)值,我使用了自定义 arrayAdapter (SpinnerHintAdapter)。这个类做的唯一重要的事情是覆盖 getCount() 所以选择数组的最后一项不显示,这是存储初始值的地方。
这一切都很好,直到您旋转设备,然后由于某种原因将微调器设置为列表的最后一个正常值,即使 Fragment 类仍然认为它设置为初始值。
任何人知道为什么会发生这种情况和/或如何解决这个问题?

代码示例:
fragment :

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_free_top_up, container, false);
Spinner pet = (Spinner) rootView.findViewById(R.id.pet);
SpinnerHintAdapter<CharSequence> petAdapter = SpinnerHintAdapter.createFromResource(getActivity(),
R.array.pet_array, android.R.layout.simple_spinner_item);
petAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
pet.setAdapter(petAdapter);
pet.setSelection(pet.getCount());
return rootView;
}

微调提示适配器:

@Override
public int getCount() {
int count = super.getCount();
// The last item will be the hint.
return count > 0 ? count - 1 : count;
}

示例字符串数组

<string-array name="pet_array">
<item>Yes</item>
<item>No</item>
<item>(initial value)</item>
</string-array>

最佳答案

旋转设备时会重新创建 Activity 。您需要覆盖 onSavedInstanceState 函数,将数据保存在 Bundle 中,然后再次在 onCreate 中使用该数据。

@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
//save your data
}

然后在您的 onCreate 中使用它来恢复您的微调器。

关于Android微调器在旋转时表现得很奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28691167/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com