我使用此代码更改了tabs
的{{1}}名称,但我收到了此错误:
HTML
我知道您无法对android.os.NetworkOnMainThreadException
android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork
networks
执行main
次操作,但我在这里使用thread
因此应该是此错误。
runOnUiThread
答案 0 :(得分:0)
axis([XMIN XMAX YMIN YMAX]
您显然正在主线程中进行网络操作,因为I know you can't do networks operations on the main thread
将在主线程上运行,而您正在调用runOnUiThread
这是一个网络连接。
您需要创建一个优于Jsoup.connect
的{{1}};除非你正在做一个长期运行的任务。
答案 1 :(得分:0)
您无法在UI线程上运行网络操作,因为您的界面将冻结,直到网络运行结束,您可以使用AsyncTask,这是此类操作的完美解决方案。使用AsyncTask,您可以在网络操作之后(甚至在网络操作期间)运行网络操作并更新UI。例如:
new AsyncTask<String, String, Elements>(){
@Override
protected Elements doInBackground(String... params) {
Document doc = Jsoup.connect("http://terry.gonguet.com/cal/?g=tp11").get();
Elements days = doc.select("div.day");
return days;
}
@Override
protected void onPostExecute(Elements days) {
for (Element day : days) {
String jour = day.getElementsByClass("dayDate").first().html();
mSectionsPagerAdapter.AddFragment(new MainFragment().newInstance(1), jour);
}
}
}.execute();
答案 2 :(得分:0)
您应该只在UI线程中添加片段而不是请求,因此这应该有效:
Thread thread = new Thread() {
@Override
public void run() {
try
{
Document doc = Jsoup.connect("http://terry.gonguet.com/cal/?g=tp11").get();
Elements days = doc.select("div.day");
runOnUiThread(new Runnable() {
@Override
public void run()
{
for (Element day : days)
{
String jour = day.getElementsByClass("dayDate").first().html();
mSectionsPagerAdapter.AddFragment(new MainFragment().newInstance(1), jour);
}
}
});
} catch (IOException ex){}
}
};
thread.start();