ArrayAdapter <String>не работает внутри фрагмента - PullRequest
1 голос
/ 22 апреля 2020

Этот код, который находится внутри фрагмента, фактически был написан для класса Java, который расширяет Activity.

В то время не было ошибок, теперь, когда я использую его внутри фрагмента, ArrayAdapter вызывает ошибку при передаче только трех параметров. Я не знаю, какая переменная будет передана в качестве 4-й переменной.

Этот адаптер массива используется для передачи значений в счетчик.

    private void page_serverSelect(com.fdossena.speedtest.core.serverSelector.TestPoint selected, com.fdossena.speedtest.core.serverSelector.TestPoint[] servers){
    transition(R.id.page_serverSelect,TRANSITION_LENGTH);
    reinitOnResume=true;
    final ArrayList<com.fdossena.speedtest.core.serverSelector.TestPoint> availableServers=new ArrayList<>();
    for(com.fdossena.speedtest.core.serverSelector.TestPoint t:servers) {
        if (t.getPing() != -1) availableServers.add(t);
    }
    int selectedId=availableServers.indexOf(selected);
    final Spinner spinner=(Spinner)view.findViewById(R.id.serverList);
    ArrayList<String> options=new ArrayList<String>();
    for(com.fdossena.speedtest.core.serverSelector.TestPoint t:availableServers){
        options.add(t.getName());
    }

    ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_dropdown_item,options.toArray(new String[0]));

    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapter);
    spinner.setSelection(selectedId);
    final Button b= view.findViewById(R.id.start);
    b.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            reinitOnResume=false;
            page_test(availableServers.get(spinner.getSelectedItemPosition()));
            b.setOnClickListener(null);
        }
    });
}

1 Ответ

1 голос
/ 22 апреля 2020

Если ваш код записи в Fragment, то измените:

ArrayAdapter<String> adapter=new ArrayAdapter<String>(getActivity(),android.R.layout.simple_spinner_dropdown_item,options.toArray(new String[0]));

вместо

ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_dropdown_item,options.toArray(new String[0]));
...