Spinner работает в 2.3, но не 3.2 - PullRequest
2 голосов
/ 07 марта 2012

Я успешно запустил приложение под Android 2.2 (api8), используя вращатели с OnItemSelectedListeners. Он был построен с tarketSdkVersion = 8 и minSdkVersion = 8. Сейчас я пытаюсь запустить его на устройстве 3.2, но счетчики не могут быть выбраны. Однако они заполняются значением массива по умолчанию, поэтому адаптер, похоже, работает. Нажатие на счетчики не приводит к реакции. Я попытался построить с tarketSdkVersion = 13 и minSdkVersion = 13, но счетчики все еще мертвы. Я использую слегка настроенные версии блесны для достижения "wrap_content" в файле multiline_spinner_dropdown_item.xml. Есть ли проблема совместимости со счетчиками начиная с версии 2.2?

Ответы [ 7 ]

2 голосов
/ 27 мая 2012

У меня была такая же проблема, я использовал спиннер в 2.2, он работал, но тот же не работает в 3.2, Проблема была с темой по умолчанию 3.2, ее holo. из-за этого счетчик не отображается должным образом, Просто создайте тему в значениях / стиле и примените ее к своей деятельности в файле android.manifest.

2 голосов
/ 15 марта 2012

Я попробовал .setEnabled (true), но это не сработало. В отчаянии я начал удалять фрагменты кода из main.java и layout.xml до тех пор, пока не остался один работающий спиннер. Когда я добавил код и элементы управления обратно, я обнаружил, что ScrollView, расположенный внутри TabHost / LinearLayout / TabWidget / FrameLayout, не позволяет ответчикам реагировать. Удалив Scrollview, Spinners работали в 3.2. По какой-то причине Scrollview работал в 2.2, но не в 3.2.

1 голос
/ 16 марта 2012

Возможно, проблемы с видимостью? Вы накладываете ScrollView поверх области, где отображаются элементы блесен? Попробуйте использовать разные состояния для счетчиков, например, изменив их значок или цвет, и посмотрите, получит ли они событие щелчка. Если они это делают, то это, вероятно, связано с видимостью. Если они этого не делают, это может быть что-то еще. Некоторый пример кода может помочь:)

1 голос
/ 14 марта 2012

Вы случайно не меняете видимость прядильщика?

У меня была похожая проблема, и нужно было звонить setAdapter() каждый раз, когда счетчик показывался повторно, в противном случае он становился невосприимчивым к щелчкам.

Вы можете увидеть изменения, внесенные мной в мой проект, которые исправили эту проблему, на https://github.com/nikclayton/android-squeezer/commit/7a148edf5f1b3eaca7718161de18254970290ce0.

0 голосов
/ 23 августа 2013

У меня была похожая проблема. Это из-за темы по умолчанию Android 3.2 и более поздних версий.

Более простое решение - использовать пользовательский счетчик или создать любой цвет фона или изображение для него, например:

android:background="@drawable/spinner"

Эта ссылка поможет вам для пользовательского прядильщика.

0 голосов
/ 17 марта 2012

Как ни странно, я попробовал другое приложение, которое отлично работает на 2.2.Когда я установил его на планшет или эмулятор 3.1, события onClick не будут срабатывать.В этот раз без прядильщиков, но слушатели тоже не работают!Вот часть кода:

//In onCreate:

//setup listeners
rbSlab = (RadioButton)findViewById(R.id.rbSlab);
rbBeam = (RadioButton)findViewById(R.id.rbBeam);
rbSlab.setOnClickListener(radio_listener);
rbBeam.setOnClickListener(radio_listener);
etFpc.setOnEditorActionListener(this);
etFy.setOnEditorActionListener(this);
etBw.setOnEditorActionListener(this);
etDp.setOnEditorActionListener(this);
etMu.setOnEditorActionListener(this);
...
}//end onCreate

//In Main body of app:
//for radio buttons
private OnClickListener radio_listener = new View.OnClickListener()
{   //@Override
    public void onClick(View v) {
        DoCalcs();
    }//onClick
};

//for edittext
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) 
    {   if ((actionId == EditorInfo.IME_ACTION_DONE) || //if DONE button pushed
            ((event.getAction()==KeyEvent.ACTION_DOWN) &&           (event.getKeyCode()    == KeyEvent.KEYCODE_ENTER))) //if ENTER button pushed
    {
        //do calcs

        return(true);
            }
        else return(false);
    }

Я построил это с целевым API 8 и min API 8, а также с целевым API 14, min 8, и при установке на API 8 слушатели работают нормально, но не с API 14!

0 голосов
/ 13 марта 2012

Вы пробовали установить спиннер как включенный?

spinner.setEnabled(true);

Хотя было бы странно, если бы он был отключен по умолчанию. Твои симптомы описывают неработающего прядильщика, хотя

...