2014-11-13 1 views
0

Я использую следующий код, чтобы получить спиннера работу ...Почему мой элемент управления spinner пустым при использовании строк ресурсов?

@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 говорит: «Попытка закончить входное событие, но приемник событий ввода уже удален.».

ответ

0

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

@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)

Смежные вопросы