Android的 - Jsoup:如何从Jsoup.connect(QUOT; URL")获取导致的AsyncTask得到()。 [英] Android - Jsoup: How to get RESULT from Jsoup.connect("url").get() from AsyncTask

查看:362
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆