我正在使用MultipartEntityBuilder将图像发送到php服务器,我将图片和视频发送到设备摄像头的目录中,我需要将文件保存在新的ArrayList上并将其发送到php服务器。
总是报告错误:
我的代码
private class MyAsyncTask extends AsyncTask<String, Integer, Double>
{
@Override
protected Double doInBackground (String... params)
{
String datos = value.getText().toString();
HttpClient httpClient = getNewHttpClient();
HttpPost httppost = new HttpPost("https://myurl.com");
try
{
path = Environment.getExternalStorageDirectory().toString() + "/mydirectory";
File fileArray = new File(path);
ArrayList<File> files = new ArrayList<File>(Arrays.asList(fileArray.listFiles()));
int itemCount = files.size();
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
for (int i = 0; i < itemCount; i++)
{
builder.addPart("images[]", new FileBody(new File(path + "/" + num_img)));
num_img++;
}
builder.addTextBody("response", "prueba");
HttpEntity entity = builder.build();
httppost.setEntity(entity);
//...............................
}
更新
protected void onPostExecute (Double result)
{
path = Environment.getExternalStorageDirectory().toString() + "/myDirectory";
runOnUiThread(new Runnable() {
@Override
public void run() {
File fileArray = new File(path);
ArrayList<File> files = new ArrayList<File>(Arrays.asList(fileArray.listFiles()));
int itemCount = files.size();
tv_files.setText("valor:" + itemCount);
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
builder.addTextBody("response", "prueba");
for (int i = 0; i < itemCount; i++)
{
builder.addPart("images[]", new FileBody(new File(path + "/" + num_img)));
num_img++;
}
HttpEntity entity = builder.build();
}
});
这个错误是想告诉你永远不要碰任何线程之外的UI视图不运行在UIThread
上。
在您的DoInBackground中,您试图获取编辑文本的值,这是考虑在后台运行的线程中触摸UI视图。
解决方案:移动以下行
String datos = value.getText().toString();
在
onPreExcute()
或AsyncTask
的构造函数上的doInbackground
外部方法。只需将String datos
声明为AsyncTask中的全局变量,并根据需要在您的doInbackground()
中使用它
@Override
protected void onPreExecute() {
datos = value.getText().toString();
}
我有一个错误,只有创建视图层次结构的原始线程才能接触它的视图。但我不知道如何在多线程中处理ui,比如列表视图,我也不知道该放在哪里。
我在Android中构建了一个简单的音乐播放器。每首歌的视图都包含一个SeekBar,实现如下: 这很好用。现在我想要一个计时器来计算歌曲进度的秒/分钟。因此,我在布局中放置了一个文本视图,在onCreate()中使用findViewById()获取它,并在。设置进度(pos): 但最后一行给了我一个例外: Android看法ViewRoot$CalledFromErrorThreadExcept
这是我所有的代码。
我正在为小应用程序设计UnitTest。这个应用程序说明您使用的是什么命理数字出生日期。我有一个问题,我该调用检查数字并将值放入TextView的方法。我有一个错误 ' 我的布局:` 我想测试的方法:'
我正在开发一个Android应用程序,我使用Eclipse作为IDE,我的数据库是MySQL。我有以下问题。当我试图通过AsynTask从数据库中获取数据时,出现了下面显示的错误。 活动: 异步任务:
我读了其他帖子,但没有解决我的问题。我是Android的新手。我必须连接到MSSQL,但我得到了原始线程错误。我如何解决这个问题?谢谢 这是我的代码: 在KuyrugaEkle函数中,我动态更改布局,并且我在该函数中收到错误。 谢谢