Почему мой элемент управления счетчиком пуст при использовании строк ресурсов?

Я использую следующий код, чтобы заставить работать счетчик...

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_main, container, false);

    Spinner spinner = (Spinner) rootView.findViewById(R.id.spinner);
    ArrayAdapter<CharSequence> spinnerAdapter = new ArrayAdapter<CharSequence>(getActivity(), andoird.R.layout.simple_spinner_item, R.array.spinner_items);
    spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(spinnerAdapter);

    return rootView;
}

Все компилируется и работает счастливо. Когда счетчик отображается, в нем нет текста. При прикосновении к спиннеру кажется, что ничего не происходит. Однако что-то случилось, потому что другие элементы управления теряют фокус и для выбора другого элемента требуется два касания. Когда к приложению прикасаются в первый раз после касания счетчика, logcat сообщает: «Попытка завершить событие ввода, но приемник события ввода уже удален.».


person Tester101    schedule 13.11.2014    source источник


Ответы (1)


Получается, что при использовании ресурса массива для значений счетчика приходится делать это немного по-другому.

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_main, container, false);

    Spinner spinner = (Spinner) rootView.findViewById(R.id.spinner);
    ArrayAdapter<CharSequence> spinnerAdapter = ArrayAdapter.createFromResource(getActivity(), R.array.spinner_items, andoird.R.layout.simple_spinner_item);
    spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(spinnerAdapter);

    return rootView;
}

Обратите внимание, что вместо

ArrayAdapter<CharSequence> spinnerAdapter = new ArrayAdapter<CharSequence>(

Вам придется использовать

ArrayAdapter<CharSequence> spinnerAdapter = ArrayAdapter.createFromResource(

Вы также заметите, что аргументы немного отличаются.

new ArrayAdapter<CharSequence>(getActivity(), andoird.R.layout.simple_spinner_item, R.array.spinner_items);

ArrayAdapter.createFromResource(getActivity(), R.array.spinner_items, andoird.R.layout.simple_spinner_item);

public ArrayAdapter (Context context, int resource, T[] objects)

public static ArrayAdapter<CharSequence> createFromResource (Context context, int textArrayResId, int textViewResId)

person Tester101    schedule 13.11.2014