我遇到了一个问题,导致我的应用程序强制关闭,我不确定为什么会发生这种情况。我的日志和来源附在下面。如果需要任何其他信息,请告诉我。
LOGCAT:
09-16 17:28:22.881: I/dalvikvm(18145): Total arena pages for JIT: 11
09-16 17:28:22.991: I/dalvikvm(18145): Total arena pages for JIT: 12
09-16 17:28:23.461: I/dalvikvm(18145): Total arena pages for JIT: 13
09-16 17:28:23.461: I/dalvikvm(18145): Total arena pages for JIT: 14
09-16 17:28:23.521: I/System.out(18145): Arrest No.
09-16 17:28:23.521: W/dalvikvm(18145): threadid=11: thread exiting with uncaught exception (group=0x41785300)
09-16 17:28:23.531: E/AndroidRuntime(18145): FATAL EXCEPTION: AsyncTask #1
09-16 17:28:23.531: E/AndroidRuntime(18145): java.lang.RuntimeException: An error occured while executing doInBackground()
09-16 17:28:23.531: E/AndroidRuntime(18145): at android.os.AsyncTask$3.done(AsyncTask.java:299)
09-16 17:28:23.531: E/AndroidRuntime(18145): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
09-16 17:28:23.531: E/AndroidRuntime(18145): at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
09-16 17:28:23.531: E/AndroidRuntime(18145): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
09-16 17:28:23.531: E/AndroidRuntime(18145): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
09-16 17:28:23.531: E/AndroidRuntime(18145): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
09-16 17:28:23.531: E/AndroidRuntime(18145): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
09-16 17:28:23.531: E/AndroidRuntime(18145): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
09-16 17:28:23.531: E/AndroidRuntime(18145): at java.lang.Thread.run(Thread.java:856)
09-16 17:28:23.531: E/AndroidRuntime(18145): Caused by: android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
09-16 17:28:23.531: E/AndroidRuntime(18145): at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:4609)
09-16 17:28:23.531: E/AndroidRuntime(18145): at android.view.ViewRootImpl.requestLayout(ViewRootImpl.java:835)
09-16 17:28:23.531: E/AndroidRuntime(18145): at android.view.View.requestLayout(View.java:15129)
09-16 17:28:23.531: E/AndroidRuntime(18145): at android.view.View.requestLayout(View.java:15129)
09-16 17:28:23.531: E/AndroidRuntime(18145): at android.view.View.requestLayout(View.java:15129)
09-16 17:28:23.531: E/AndroidRuntime(18145): at android.view.View.requestLayout(View.java:15129)
09-16 17:28:23.531: E/AndroidRuntime(18145): at android.view.View.requestLayout(View.java:15129)
09-16 17:28:23.531: E/AndroidRuntime(18145): at android.widget.TextView.checkForRelayout(TextView.java:6309)
09-16 17:28:23.531: E/AndroidRuntime(18145): at android.widget.TextView.setText(TextView.java:3547)
09-16 17:28:23.531: E/AndroidRuntime(18145): at android.widget.TextView.setText(TextView.java:3405)
09-16 17:28:23.531: E/AndroidRuntime(18145): at android.widget.TextView.setText(TextView.java:3380)
09-16 17:28:23.531: E/AndroidRuntime(18145): at com.example.test.MainActivity$MyTask.doInBackground(MainActivity.java:59)
09-16 17:28:23.531: E/AndroidRuntime(18145): at com.example.test.MainActivity$MyTask.doInBackground(MainActivity.java:1)
09-16 17:28:23.531: E/AndroidRuntime(18145): at android.os.AsyncTask$2.call(AsyncTask.java:287)
09-16 17:28:23.531: E/AndroidRuntime(18145): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
09-16 17:28:23.531: E/AndroidRuntime(18145): ... 5 more
资料来源:
public class MainActivity extends Activity {
TextView tv;
final String URL="http://example.com";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.TextView01);
new MyTask().execute(URL);
}
private class MyTask extends AsyncTask<String, Void, String> {
ProgressDialog prog;
String title = "";
@Override
protected void onPreExecute() {
prog = new ProgressDialog(MainActivity.this);
prog.setMessage("Loading....");
prog.show();
}
@Override
protected String doInBackground(String... params) {
try {
Document doc = Jsoup.connect(params[0]).get();
Element tableHeader = doc.select("tr").first();
for( Element element : tableHeader.children() )
{
// Here you can do something with each element
System.out.println(element.text());
tv.setText(element.text());
}
title = doc.title();
} catch (IOException e) {
e.printStackTrace();
}
return title;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
prog.dismiss();
tv.setText(result);
}
}
}
你不能使用电视。setText(element.text()) 内部doInBackground。更一般地说,您不能更新doInBackground方法中的UI元素。尝试探索名为onProgressUpdate的方法。
我希望这有帮助。
我正在使用MultipartEntityBuilder将图像发送到php服务器,我将图片和视频发送到设备摄像头的目录中,我需要将文件保存在新的ArrayList上并将其发送到php服务器。 总是报告错误: 我的代码 更新
我在Android中构建了一个简单的音乐播放器。每首歌的视图都包含一个SeekBar,实现如下: 这很好用。现在我想要一个计时器来计算歌曲进度的秒/分钟。因此,我在布局中放置了一个文本视图,在onCreate()中使用findViewById()获取它,并在。设置进度(pos): 但最后一行给了我一个例外: Android看法ViewRoot$CalledFromErrorThreadExcept
这是我所有的代码。
我有一个错误,只有创建视图层次结构的原始线程才能接触它的视图。但我不知道如何在多线程中处理ui,比如列表视图,我也不知道该放在哪里。
我正在为小应用程序设计UnitTest。这个应用程序说明您使用的是什么命理数字出生日期。我有一个问题,我该调用检查数字并将值放入TextView的方法。我有一个错误 ' 我的布局:` 我想测试的方法:'
得到一个错误:android.view.ViewRootImpl$CalledFromWrongThreadException:只有创建视图层次结构的原始线程可以触摸它的视图。 我真的不知道为什么。 谢谢帮忙。