Попытка создать фрагмент со спиннером в нем - PullRequest
0 голосов
/ 26 мая 2018

Я пытаюсь вставить в свой фрагмент счетчик.Конструктор для ArrayAdapter имеет ссылку на контекст.Что касается моей деятельности, я бы поставил это в качестве параметра, т.е.

ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_item, list);

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

Код: -

 void setUpSpinner()
    {

        Spinner spinner2;
        spinner2 = (Spinner) myView.findViewById(R.id.spinner2);
        List<String> list = new ArrayList<String>();
        list.add("list 1");
        list.add("list 2");
        list.add("list 3");
        ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_spinner_item, list);
        dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner2.setAdapter(dataAdapter);

    }
}

Ответы [ 3 ]

0 голосов
/ 26 мая 2018

Вы пишете this В ArrayAdapter, который является фрагментом, но требует контекста

Your Code: -

ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this/*Over Here*/,
            android.R.layout.simple_spinner_item, list);

Correct Code: -

ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(getActivity().getApplicationContext(),
                android.R.layout.simple_spinner_item, list);
0 голосов
/ 26 мая 2018

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

ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(activityContext,
        R.array.planets_array, android.R.layout.simple_spinner_item);

Используйте это для справки: https://developer.android.com/guide/topics/ui/controls/spinner

0 голосов
/ 26 мая 2018

Используйте getContext() вместо this

 ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(getContext(),
        android.R.layout.simple_spinner_item, list);

Поскольку в Fragment this класс Context, Fragment не наследуется от Context.Так что используйте Context родительского Activity

...