Android微调器覆盖默认选择

时间:2016-09-02 14:09:07

标签: android android-spinner

我有一个带有宠物类型列表的微调器。我希望原始文本被下拉菜单中的新选项替换,但是如下面的第3个快照中所示,新文本将覆盖原始文本。以下屏幕截图将更好地解释情景。

Image when drop down is not selected

Image with drop down expanded

Image where drop down selection is overwriting the original text

以下是代码段。

    ArrayList<String> petDropDownList = new ArrayList<String>();
    petDropDownList.add(0, "CAT");
    petDropDownList.add(1, "DOG");
    petDropDownList.add(2, "HORSE");
    petDropDownList.add(3, "COW");
    final Spinner petTypeSelect = (Spinner)rootView.findViewById(R.id.pet_type_spinner);
    final ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(getContext(),
                        android.R.layout.simple_spinner_item,
                        petDropDownList);
    petTypeSelect.setAdapter(spinnerAdapter);
    petTypeSelect.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int position, long l) {
                // ??
            }

            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {
                // ??
            }
        });

处理这种情况的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

经过2天的调试后,我意识到问题出在片段类的双重调用上。以下是我弄清楚问题的方法。

  1. 我将日志放入所有相关方法中,并且我发现onCreate()被调用了两次。
  2. 我在Why is my onCreateView method being called twice?
  3. 找到了问题的解决方案

    总结一下这个问题,下拉列表似乎总是覆盖以前的选择。为了解决这个问题,我不得不删除片段的双实例化。我在xml中创建了一个,在Activity类中创建了另一个。我删除了一个,问题得到解决。