Java 异步任务整数

Java 异步任务整数,java,android,android-asynctask,jsoup,Java,Android,Android Asynctask,Jsoup,我一直在尝试解决如何在异步任务中使用整数作为参数,以及如何分配从解析中收集的字符串值,并将其放入字符串数组以供以后调用。我到处找,找不到解决这个问题的办法 String[] webValues = new String[10]; new parsing().execute("web1", "0"); new parsing().execute("web2", "1"); public class parsing extends AsyncTask<String, Integer, Vo

我一直在尝试解决如何在异步任务中使用整数作为参数,以及如何分配从解析中收集的字符串值,并将其放入字符串数组以供以后调用。我到处找,找不到解决这个问题的办法

String[] webValues = new String[10];

new parsing().execute("web1", "0");
new parsing().execute("web2", "1");

public class parsing extends AsyncTask<String, Integer, Void>{
    String websiteValues;
    @Override
    protected Void doInBackground(String... params) {
        try {
            Document doc = Jsoup.connect(URL).get();
            Element itemName = doc.getElementById(params[0]);
            String htmlNoBr = itemName.html().replaceAll("<br>", "\n");
            htmlNoBr = htmlNoBr.replaceAll("<b>", "");
            htmlNoBr = htmlNoBr.replaceAll("</b>", "");
            htmlNoBr = htmlNoBr.replaceAll("<hr>", "");
            websiteValues = htmlNoBr;
        }catch(Exception e){e.printStackTrace();}
        return null;
    }

    protected void onPostExecute(Integer position) {
        webValues[position.intValue()] = websiteValues;
    }
}
String[]webValues=新字符串[10];
新建解析()。执行(“web1”、“0”);
新建解析()。执行(“web2”、“1”);
公共类解析扩展了异步任务{
字符串网站值;
@凌驾
受保护的Void doInBackground(字符串…参数){
试一试{
Document doc=Jsoup.connect(URL.get();
Element itemName=doc.getElementById(参数[0]);
字符串htmlNoBr=itemName.html().replaceAll(“
”,“\n”); htmlNoBr=htmlNoBr.replaceAll(“,”); htmlNoBr=htmlNoBr.replaceAll(“,”); htmlNoBr=htmlNoBr.replaceAll(“
”,”); websiteValues=htmlNoBr; }catch(异常e){e.printStackTrace();} 返回null; } 受保护的void onPostExecute(整数位置){ webValues[position.intValue()]=websiteValues; } }
我已经能够将从“web1”中收集的信息在调用时放入一个名为webValues的字符串中,而该字符串不是数组,但是我正在尝试调用一个 “new parsing().execute()”其中指定了字符串数组webValues的位置,并将信息发送到字符串数组的索引。我一直在Asynctask中使用“Integer”,并试图在onPostExecute中使用position来分配它,但它一直不起作用。我假设我犯了一个新手错误,在执行中错误地分配了整数,但是我尝试了所有我能想到的方法,只有“1”(或任何整数值)没有给我错误。如果有人能给我指出正确的方向或帮助我找出我做错了什么,我将不胜感激

如果我没有解释清楚,请让我知道,我可以尝试重新措辞


提前谢谢你

我想这会对你有所帮助

String[] webValues = new String[10];

new parsing().execute("web1", "0");
new parsing().execute("web2", "1");

public class parsing extends AsyncTask<String, Void, Integer>{
String websiteValues;
@Override
protected Integer doInBackground(String... params) {
    try {
        Document doc = Jsoup.connect(URL).get();
        Element itemName = doc.getElementById(params[0]); //Here as per your input it first points to web1 and for next web2
        String htmlNoBr = itemName.html().replaceAll("<br>", "\n");
        htmlNoBr = htmlNoBr.replaceAll("<b>", "");
        htmlNoBr = htmlNoBr.replaceAll("</b>", "");
        htmlNoBr = htmlNoBr.replaceAll("<hr>", "");
        websiteValues = htmlNoBr;
        return Integer.parseInt(params[1]); //for first 0 and for second 1
    }catch(Exception e){e.printStackTrace();}
    return null;
}

protected void onPostExecute(Integer position) {

    if (position != null)
         webValues[position.intValue()] = websiteValues;
    }
}
String[]webValues=新字符串[10];
新建解析()。执行(“web1”、“0”);
新建解析()。执行(“web2”、“1”);
公共类解析扩展了异步任务{
字符串网站值;
@凌驾
受保护的整数doInBackground(字符串…参数){
试一试{
Document doc=Jsoup.connect(URL.get();
Element itemName=doc.getElementById(参数[0]);//根据您的输入,它首先指向web1,然后指向下一个web2
字符串htmlNoBr=itemName.html().replaceAll(“
”,“\n”); htmlNoBr=htmlNoBr.replaceAll(“,”); htmlNoBr=htmlNoBr.replaceAll(“,”); htmlNoBr=htmlNoBr.replaceAll(“
”,”); websiteValues=htmlNoBr; 返回Integer.parseInt(参数[1]);//第一个0和第二个1 }catch(异常e){e.printStackTrace();} 返回null; } 受保护的void onPostExecute(整数位置){ 如果(位置!=null) webValues[position.intValue()]=websiteValues; } }
AsyncTask原型是
AsyncTask
。中间那一个是进步的,你不能指望它会有结果,是吗?因此,将结果部分指定为整数类型。我刚刚添加了您的更改,但它不起作用,给出了一个错误:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“int java.lang.Integer.intValue()”—在公共类行,以及webValues[position.intValue()],我认为doInBackground必须有字符串而不是整数?“web1”和“web2”将是站点上的元素Id,“0”和“1”被假定为我试图传递的字符串数组“webValues”的索引,因此web1字符串数据将转到索引0,web2字符串数据转到索引1(考虑到没有0的索引,我可能想要索引1和2,而不是0和1…哎哟)在我做了一个非常小的更改后,您的答案起作用了,我想让您知道,我将“return Integer.parseInt(params[0]);”部分中的参数[0]更改为参数[1],这样就调用了第二个参数。非常感谢您的帮助,我自己是不会得到它的。