0

我正在制作一个使用互联网数据的安卓应用程序。我在 min sdk 版本 2.2 上开发,但现在我将其更改为 3.0。我的问题是现在某些组件不起作用。我的猜测是 2.2 版中的某些代码可能会在 3.0 版中被弃用。但我不知道该怎么做才能让它发挥作用。

例如,我的 ImageView 在 2.2 中工作。但在 3.0 中不是。

            //******satellite url
    private void satellite() {
        // TODO Auto-generated method stub
        ImageView imgView =(ImageView)findViewById(R.id.satellite);
        Drawable drawable = LoadImageFromWeb("http://www.pagasa.dost.gov.ph/wb/sat_images/satellite.gif");
        imgView.setImageDrawable(drawable);

    }

另一个是我的 json 解析器。它在 2.2 中也能完美运行,但在 3.0 中却不行

//json stuffs , setText on textViews in main menu
    private void jsonStuffs() {
        // TODO Auto-generated method stub
    //JSON PARSER & HOME PAGE TEXTVIEWS

        client = new DefaultHttpClient();
        //new Read().execute("id");
        //http client codes only no parser !!
        GetMethodEx test = new GetMethodEx();
        String returned;
        try {
            returned = test.getInternetData();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        try{
            String jsonStr = test.getInternetData(); //punta sa GetMethodEx
                JSONObject obj = new JSONObject(jsonStr);

                //find temperature sa JSON sa webpage
                String temperature = obj.getString("temperature");
                TextView tvTemp = (TextView)findViewById(R.id.temp);
                tvTemp.setText(temperature);

                //find sunrise sa JSON sa webpage
                String sunrise = obj.getString("sunrise");
                TextView tvSunrise = (TextView)findViewById(R.id.sunrise);
                tvSunrise.setText("Sunrise: " + sunrise);

                //find sunset sa JSON sa webpage
                String sunset = obj.getString("sunset");
                TextView tvSunset = (TextView)findViewById(R.id.sunset);
                tvSunset.setText("Sunset: " + sunset);


        }
        //catch (JSONException e) {
             // e.printStackTrace();
            //} 
        catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    }

我没有收到关于这个项目的任何错误。只是数据不显示,图像视图不显示等。

我希望有人能帮帮忙。提前致谢 :)

4

1 回答 1

3

我认为原因是Android 3.0及以上,你需要做像http请求这样的网络操作,所有这些都在单独的线程中,然后是UI线程。您直接在 UI 线程中使用代码,因此它在 HoneyComb 下工作。因此,您需要将 Web 请求放在单独的线程中,然后是 UI。AsyncTask是一个不错的选择。

有关更多详细信息,请查看此链接。

于 2013-01-10T04:34:31.420 回答