- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 Android 的新手,正在为自己创建一个迷你 FTP 下载管理器。我正在使用多线程,每个线程处理一个下载或上传。在 MainActivity.java 中,我在 View 中使用了两个微调器。一个列出服务器上的文件(可以下载),另一个列出我手机文件夹中的文件(可以上传)。我想在上传新文件时更新第一个(下载)微调器,在下载新文件时更新第二个(上传)微调器。但是,我无法弄清楚如何仅在相应线程完成工作时更新微调器。我在 MainActivity.java 中创建了更新微调器的方法,并尝试在线程的 run() 结束时调用它们,以便在线程完成下载/上传后更新它们。但是,我在 LogCat 中收到一条错误消息
android.view.ViewRoot$CalledFromWrongThreadException :只有创建 View 层次结构的原始线程才能触及它的 View 。
更新上传微调器的方法是:
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);
}
为什么不能从另一个线程调用此方法,另一种方法是什么,我只是想更新微调器,但我在这唯一的事情上花了一整天...
最佳答案
对于任何将更新 UI 的代码,将其放在此 block 中:
有关 runOnUiThread 的更多信息,请参阅此链接
runOnUiThread(new Runnable() {
public void run() {
// RUN THE CODE WHICH IS GIVING THAT EXCEPTION HERE
}
});
也可以这样做:
Runnable run = new Runnable() {
@Override
public void run() {
// RUN THE CODE WHICH IS GIVING THAT EXCEPTION HERE
}
}; YourActivity.this.runOnUiThread(run);
或者,您可以使用 AsyncTask .您可以在 doInBackground()
方法中进行处理,然后在 AsyncTask< 的
onPostExecute()
方法中更新 Spinners
/
编辑:查看这些教程以帮助您开始使用 AsyncTask:
thenewboston.org 的第 5 个链接在 YouTube 上有大约 200 个视频教程:http://www.youtube.com/course?list=EC2F07DBCDCC01493A&feature=plcp
编辑 2:检查此链接中的编辑:https://stackoverflow.com/a/13265776/450534
它在答案的底部。
关于java - Android View 不能被其他线程触及?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13538621/
我正在尝试创建一个 React 组件来抽象化为我的表单创建一个输入组。所有输入都具有相同的布局 - 一个标签,下面是输入,如果存在错误/信息文本,它们将显示在输入下。 以前我处理自己的表单状态/处理程
我正在尝试将子 shell 的输出行读取到数组中,但我不愿意设置 IFS,因为它是全局的。我不希望脚本的一部分影响后面的部分,因为那是不好的做法,我拒绝这样做。在命令后恢复 IFS 不是一个选项,因为
我是一名优秀的程序员,十分优秀!