我是 Android 的新手,正在为自己创建一个迷你 FTP 下载管理器。我正在使用多线程,每个线程处理一次下载或上传。在 MainActivity.java 中,我在视图中使用了两个微调器。一个列出服务器上的文件(可以下载),另一个列出我手机文件夹中的文件(可以上传)。我想在上传新文件时更新第一个(下载)微调器,并在下载新文件时更新第二个(上传)微调器。但是,只有在相应的线程完成工作时,我才能弄清楚如何更新微调器。我在 MainActivity.java 中创建了更新微调器的方法,并尝试在线程的 run() 结束时调用它们,以便在线程完成下载/上传后更新它们。但是,我在 LogCat 中收到错误消息
android.view.ViewRoot$CalledFromWrongThreadException :只有创建视图层次结构的原始线程才能接触其视图。
更新上传微调器的方法是:
void upScrollUpdate() {
spinup=(Spinner)findViewById(R.id.uploadspin);
spinup.setEnabled(false);
String[] upload={"No Files"};
File sdDir=Environment.getExternalStorageDirectory();
File dir=new File (sdDir.getAbsolutePath() + "/aFTP");
File[] fArray=dir.listFiles();
if(fArray.length>0) {
upload=new String[fArray.length];
}
for(int i=0;i<fArray.length;i++) {
upload[i]=fArray[i].getName();
}
ArrayAdapter<String> saaUpload=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_dropdown_item,upload);
spinup.setAdapter(saaUpload);
if(spinup.getSelectedItem().toString().equalsIgnoreCase("No Files")) {
uploadButton.setEnabled(false);
}
spinup.setEnabled(true);
}
为什么不能从另一个线程调用这个方法,还有什么别的方法,我只是想更新微调器,但我花了一整天的时间在这唯一的事情上......