Java 结构,并将两个阵列发送到同一接收函数

Java 结构,并将两个阵列发送到同一接收函数,java,android,arrays,eclipse,jsoup,Java,Android,Arrays,Eclipse,Jsoup,早上好 我尝试将两个数组(分别从getValuesGraph(doc)和getValuesFooter(doc)返回)发送到同一个函数(OnPostExecute),我是Java和Android的新手,现在不知道应用程序代码结构是否正确。所以我为这场“灾难”道歉。 LogCat说: 02-21 00:07:25.852:W/dalvikvm(3282):threadid=1:线程以未捕获异常退出(组=0x40a71930) 02-21 00:07:25.862:E/AndroidRuntime(

早上好

我尝试将两个数组(分别从getValuesGraph(doc)和getValuesFooter(doc)返回)发送到同一个函数(OnPostExecute),我是Java和Android的新手,现在不知道应用程序代码结构是否正确。所以我为这场“灾难”道歉。 LogCat说:

02-21 00:07:25.852:W/dalvikvm(3282):threadid=1:线程以未捕获异常退出(组=0x40a71930) 02-21 00:07:25.862:E/AndroidRuntime(3282):致命异常:主 02-21 00:07:25.862:E/AndroidRuntime(3282):java.lang.NullPointerException 02-21 00:07:25.862:E/AndroidRuntime(3282):位于com.example.kwhora1.MainActivity$BackGroundTask.onPostExecute(MainActivity.java:159) 02-21 00:07:25.862:E/AndroidRuntime(3282):位于com.example.kwhora1.MainActivity$BackGroundTask.onPostExecute(MainActivity.java:1) 02-21 00:07:25.862:E/AndroidRuntime(3282):在android.os.AsyncTask.finish(AsyncTask.java:631) 02-21 00:07:25.862:E/AndroidRuntime(3282):在android.os.AsyncTask.access$600(AsyncTask.java:177) 02-21 00:07:25.862:E/AndroidRuntime(3282):位于android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644) 02-21 00:07:25.862:E/AndroidRuntime(3282):在android.os.Handler.dispatchMessage(Handler.java:99)上 02-21 00:07:25.862:E/AndroidRuntime(3282):在android.os.Looper.loop(Looper.java:137)上 02-21 00:07:25.862:E/AndroidRuntime(3282):位于android.app.ActivityThread.main(ActivityThread.java:5041) 02-21 00:07:25.862:E/AndroidRuntime(3282):位于java.lang.reflect.Method.Invokenactive(本机方法) 02-21 00:07:25.862:E/AndroidRuntime(3282):位于java.lang.reflect.Method.invoke(Method.java:511) 02-21 00:07:25.862:E/AndroidRuntime(3282):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 02-21 00:07:25.862:E/AndroidRuntime(3282):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 02-21 00:07:25.862:E/AndroidRuntime(3282):在dalvik.system.NativeStart.main(本机方法)

代码如下:

package com.example.kwhora1;

import java.io.IOException;
import java.net.URL;
import java.util.Arrays;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;

import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.Menu;
import android.widget.TextView;



public class MainActivity extends Activity {

private TextView tvmax, tvmid, tvmin, tvactualval;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        tvmax=(TextView)findViewById(R.id.tvmaximo);
        tvmid=(TextView)findViewById(R.id.tvmedio);
        tvmin=(TextView)findViewById(R.id.tvminimo);

        new BackGroundTask().execute();



    }



    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }



    class BackGroundTask extends AsyncTask<Void, Void, String[]> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }


        public String[] getValuesGraph(Document doc) {


                int cont=24,var=7;
                String bar[] = new String[cont];



   /*
   * Getting elements from the graphic in an array from 0-23. 0 it's 1:00am, 23 it's 00:00am
   */

               for (cont=0; cont < 24; cont++){

String onMouseOver = doc.select("a").get(var+cont).attr("onMouseOver");
               bar[cont] = onMouseOver.split("'")[9];


               }


               return bar;



        }


        public String[] getValuesFooter(Document doc) {



            String values[] = new String[7];


            /*
                * Getting elements from the graphic footer
                */

               Elements elements = doc.select("td.cabeceraRutaTexto");
               elements.size(); // 6



                   /*  Getting text from table */
                   values[0] = elements.get(0).text(); // TITLE
                   values[1] = elements.get(1).text(); // TEXT MAX VALUE
                   values[2] = elements.get(2).text(); // TEXT MIDDLE VALUE
                   values[3] = elements.get(3).text(); // TEXTO MIN VALUE

                   /* Getting numbers from table */

                   values[4] = elements.get(4).text(); // NUMBER MAX VALUE
                   values[5] = elements.get(5).text(); // NUMBER MIDDLE VALUE
                   values[6] = elements.get(6).text(); // NUMBER MIN VALUE    


                   return values;


         }




        @Override
        public String[] doInBackground(Void... params) {




            try {

                URL url= new URL("http://www.mywebtoextractdata.com");
                Document doc = Jsoup.connect(url.toString()).get();

                getValuesGraph(doc);

                getValuesFooter(doc);

/*
* Getting elements from the graphic in an array from 0-23. 0 it's 1:00am, 23 it's 00:00am
*/




            } catch (IOException e) {
                e.printStackTrace();
            }

            return null;
        }





        @Override
        protected void onPostExecute(String[] values) {

            /*tvactualval.setText();*/

            tvmax.setText(values[4]);
            tvmid.setText(values[5]);
            tvmin.setText(values[6]);

            /*System.out.println(val[4]);*/
            super.onPostExecute(values);
        }




    }


}
package com.example.1;
导入java.io.IOException;
导入java.net.URL;
导入java.util.array;
导入org.jsoup.jsoup;
导入org.jsoup.nodes.Document;
导入org.jsoup.select.Elements;
导入android.app.Activity;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.view.Menu;
导入android.widget.TextView;
公共类MainActivity扩展了活动{
私有文本视图tvmax、tvmid、tvmin、tvactualval;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvmax=(TextView)findViewById(R.id.tvmaximo);
tvmid=(TextView)findViewById(R.id.tvmedio);
tvmin=(TextView)findViewById(R.id.tvmimo);
新建BackGroundTask().execute();
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(R.menu.main,menu);
返回true;
}
类BackGroundTask扩展了AsyncTask{
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
}
公共字符串[]getValuesGraph(文档文档){
int cont=24,var=7;
字符串栏[]=新字符串[cont];
/*
*从0-23的数组中获取图形元素。0是1:00am,23是00:00am
*/
对于(cont=0;cont<24;cont++){
字符串onMouseOver=doc.select(“a”).get(var+cont.attr(“onMouseOver”);
条[cont]=onMouseOver.split(“”)[9];
}
返回杆;
}
公共字符串[]getValuesFooter(文档文档){
字符串值[]=新字符串[7];
/*
*从图形页脚获取元素
*/
Elements=doc.select(“td.cabeceraRutaTexto”);
elements.size();//6
/*从表中获取文本*/
值[0]=elements.get(0.text();//标题
值[1]=elements.get(1.text();//文本最大值
值[2]=elements.get(2.text();//文本中间值
值[3]=elements.get(3.text();//TEXTO最小值
/*从表中获取数字*/
values[4]=elements.get(4).text();//数字最大值
values[5]=elements.get(5).text();//数字中间值
values[6]=elements.get(6.text();//NUMBER最小值
返回值;
}
@凌驾
公共字符串[]doInBackground(Void…params){
试一试{
URL=新URL(“http://www.mywebtoextractdata.com");
Document doc=Jsoup.connect(url.toString()).get();
getValuesGraph(文档);
getValuesFooter(文档);
/*
*从0-23的数组中获取图形元素。0是1:00am,23是00:00am
*/
}捕获(IOE异常){
e、 printStackTrace();
}
返回null;
}
@凌驾
受保护的void onPostExecute(字符串[]值){
/*tvactualval.setText()*/
tvmax.setText(值[4]);
tvmid.setText(值[5]);
tvmin.setText(值[6]);
/*System.out.println(val[4])*/
super.onPostExecute(值);
}
}
}

提前感谢您的帮助和时间。

String[]doInBackground(Void…params){
中,您应该返回一个字符串数组。因此创建一个字符串数组

 String arr [] = new String [2];
然后将
getValuesGraph()
的结果添加到其中

arr[0] = getValuesGraph(doc);
arr[1] = getValuesFooter(doc);

然后
return
then arr

非常感谢您的帮助。这是最好的方法吗?现在编译器说“不能从字符串转换”[