Android的 - Jsoup:如何从Jsoup.connect(QUOT; URL")获取导致的AsyncTask得到()。 [英] Android - Jsoup: How to get RESULT from Jsoup.connect("url").get() from AsyncTask
本文介绍了Android的 - Jsoup:如何从Jsoup.connect(QUOT; URL")获取导致的AsyncTask得到()。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想获得文件,它返回Jsoup.connect(URL)。从AsyncTask的get()方法,我可以恢复吗?
我只是想创建类,将是帮助我获得一些URL数据))
活动类:
@覆盖
保护无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.activity_main); LV =(ListView控件)findViewById(R.id.listView1); 尝试{
DOC =新GetDataFromUrl(本).execute(functions_list)获得();
}赶上(InterruptedException的E){
// TODO自动生成catch块
e.printStackTrace();
}赶上(为ExecutionException E){
// TODO自动生成catch块
e.printStackTrace();
}
}
和AsyncTask的扩展类code:
包com.example.PACKAGENAME;
进口java.io.IOException异常;进口org.jsoup.Jsoup;
进口org.jsoup.nodes.Document;进口android.app.ProgressDialog;
进口android.content.Context;
进口android.os.AsyncTask;
进口android.widget.Toast;公共类GetDataFromUrl扩展的AsyncTask<弦乐,太虚,文档> { 上下文mContext;
ProgressDialog pdialog; 公共GetDataFromUrl(上下文的背景下){
mContext =背景;
} @覆盖
在preExecute保护无效(){
super.on preExecute();
pdialog =新ProgressDialog(mContext);
pdialog.setTitle(R.string.loading);
pdialog.setCancelable(假);
pdialog.show();
} @覆盖
受保护的文档doInBackground(字符串...数据){ 尝试{
。文档的DOC = Jsoup.connect(数据[0])获得();
返回文档;
}赶上(IOException异常五){
// TODO自动生成catch块
e.printStackTrace();
} 返回null;
} @覆盖
保护无效onPostExecute(文档结果){
如果(结果!= NULL){
super.onPostExecute(结果);
pdialog.cancel();
}
其他
Toast.makeText(mContext,NULL ASYNC,Toast.LENGTH_LONG).show(); }}
解决方案
没有,你只需要创建界面
TaskCompleteListner.java
公共接口TaskCompleteListner { 无效onTaskComplete(字符串结果);
}
YourActivity.java
公共类YourActivity扩展活动实现TaskCompleteListner
{ @覆盖
保护无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.activity_main); LV =(ListView控件)findViewById(R.id.listView1); 尝试{
DOC =新GetDataFromUrl(本).execute(functions_list)获得();
}赶上(InterruptedException的E){
// TODO自动生成catch块
e.printStackTrace();
}赶上(为ExecutionException E){
// TODO自动生成catch块
e.printStackTrace();
}
}
@override
无效onTaskComplete(字符串结果)
{ //你的结果将在这里结果变量
}}
GetDataFromUrl.java
mport java.io.IOException异常;进口org.jsoup.Jsoup;
进口org.jsoup.nodes.Document;进口android.app.ProgressDialog;
进口android.content.Context;
进口android.os.AsyncTask;
进口android.widget.Toast;公共类GetDataFromUrl扩展的AsyncTask<弦乐,太虚,文档> { 上下文mContext;
ProgressDialog pdialog;
TaskCompleteListner taskCompleteListener;
公共GetDataFromUrl(上下文的背景下){
mContext =背景;
taskCompleteListener =(TaskCompleteListner)范围内;
} @覆盖
在preExecute保护无效(){
super.on preExecute();
pdialog =新ProgressDialog(mContext);
pdialog.setTitle(R.string.loading);
pdialog.setCancelable(假);
pdialog.show();
} @覆盖
受保护的文档doInBackground(字符串...数据){ 尝试{
。文档的DOC = Jsoup.connect(数据[0])获得();
返回文档;
}赶上(IOException异常五){
// TODO自动生成catch块
e.printStackTrace();
} 返回null;
} @覆盖
保护无效onPostExecute(文档结果){
pdialog.cancel();
如果(结果!= NULL){ taskCompleteListener.OnTaskComplete(结果);
}
其他
Toast.makeText(mContext,NULL ASYNC,Toast.LENGTH_LONG).show(); }}
I want to get DOCUMENT which return Jsoup.connect("url").get() from AsyncTask, can i to return it? I just want to create class which will be to help me to get data from some url ))
Activity class:
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = (ListView) findViewById(R.id.listView1);
try {
doc = new GetDataFromUrl(this).execute(functions_list).get();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
and AsyncTask extend class code :
package com.example.PACKAGENAME;
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import android.widget.Toast;
public class GetDataFromUrl extends AsyncTask<String, Void, Document> {
Context mContext;
ProgressDialog pdialog;
public GetDataFromUrl(Context context) {
mContext = context;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
pdialog = new ProgressDialog(mContext);
pdialog.setTitle(R.string.loading);
pdialog.setCancelable(false);
pdialog.show();
}
@Override
protected Document doInBackground(String... data) {
try {
Document doc = Jsoup.connect(data[0]).get();
return doc;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Document result) {
if (result != null) {
super.onPostExecute(result);
pdialog.cancel();
}
else
Toast.makeText(mContext, "NULL ASYNC", Toast.LENGTH_LONG).show();
}
}
解决方案
no you just need to create interface
TaskCompleteListner.java
public Interface TaskCompleteListner{
void onTaskComplete(String result);
}
YourActivity.java
public Class YourActivity extends Activity implements TaskCompleteListner
{
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = (ListView) findViewById(R.id.listView1);
try {
doc = new GetDataFromUrl(this).execute(functions_list).get();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@override
void onTaskComplete(String result)
{
//your result will be here in result variable
}
}
GetDataFromUrl.java
mport java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import android.widget.Toast;
public class GetDataFromUrl extends AsyncTask<String, Void, Document> {
Context mContext;
ProgressDialog pdialog;
TaskCompleteListner taskCompleteListener;
public GetDataFromUrl(Context context) {
mContext = context;
taskCompleteListener=(TaskCompleteListner)context;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
pdialog = new ProgressDialog(mContext);
pdialog.setTitle(R.string.loading);
pdialog.setCancelable(false);
pdialog.show();
}
@Override
protected Document doInBackground(String... data) {
try {
Document doc = Jsoup.connect(data[0]).get();
return doc;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Document result) {
pdialog.cancel();
if (result != null) {
taskCompleteListener.OnTaskComplete(result);
}
else
Toast.makeText(mContext, "NULL ASYNC", Toast.LENGTH_LONG).show();
}
}
这篇关于Android的 - Jsoup:如何从Jsoup.connect(QUOT; URL&QUOT;)获取导致的AsyncTask得到()。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文