ArrayAdapter<String> 在片段内不工作
ArrayAdapter<String> not working inside the fragment
这段代码位于一个片段中,实际上是为扩展 Activity
的 Java class 编写的。
当时没有错误,现在我在片段中使用它,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);
}
});
}
如果您在 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]));
这段代码位于一个片段中,实际上是为扩展 Activity
的 Java class 编写的。
当时没有错误,现在我在片段中使用它,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);
}
});
}
如果您在 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]));