0

インターネットデータを利用したAndroidアプリを作っています。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);

    }

もう1つは私の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();
            }
    }

このプロジェクトでエラーは発生していません。データが表示されていない、imageviewが表示されていないなど。

誰かが助けてくれることを願っています。前もって感謝します :)

4

1 に答える 1

3

その理由はAndroid3.0以降だと思います。httpリクエストのようなネットワーク操作を行う必要があり、すべて別のスレッドで、次にUIスレッドで行う必要があります。UIスレッドでコードを直接使用しているため、HoneyCombの下で機能します。したがって、Webリクエストを別のスレッドに配置してからUIに配置する必要があります。AsyncTask良いオプションです。

詳細については、このリンクを確認してください。

于 2013-01-10T04:34:31.420 に答える