1

そうですね、これに関しては、私を完全な初心者と見なすべきだと思います。私は頭を悩ませています。

私は、それぞれがやりたいさまざまな側面を扱っているいくつかの部分的なチュートリアルから、これについて理解していることをまとめようとしました。

要するに、私がやりたいことは、URL からテキストを読み取ってテキスト ビューに表示することだけです。私の理解では、3.0 の更新以降、それを行うには AsyncTask が必要です。

エラーの原因と修正方法がわからないので、どこが間違っているのかについての助けは素晴らしいでしょう。

doInBackground の try と catch に含まれるコードが、3.0 の更新前に単独で機能することはわかっています。これも非同期で動作するように変更する必要があるかどうかはわかりませんが。

また、これが整理されると、おそらく他の問題が発生する可能性があると思います.誰かが明白に何かを見つけたら、それを指摘していただければ幸いです.

String Event;
TextView eventText;
TextView titleText;

String HTML;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.newevent);

    titleText = (TextView) findViewById(R.id.Title);
    eventText = (TextView) findViewById(R.id.Event);

    new eventupdate().execute();


}

public class eventupdate extends AsyncTask<String, Void, Void> {

    @Override
    protected Void doInBackground(String... url) {

        try {

            Thread.sleep(4000);                 

            HttpClient httpClient = new DefaultHttpClient();
            HttpContext localContext = new BasicHttpContext();
            HttpGet httpGet = new HttpGet(
                    "http://masterzangetsu.eu/Apps/rocksoctest"); // URL!
            HttpResponse response = httpClient.execute(httpGet,
                    localContext);
            String result = "";

            BufferedReader reader = new BufferedReader(
                    new InputStreamReader(response.getEntity().getContent()));

            String line = null;
            while ((line = reader.readLine()) != null) {
                result += line + "\n";
                HTML = result;
            }

        } catch (InterruptedException e) {

            e.printStackTrace();


        } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        eventText.setText("" + HTML);

        // TODO Auto-generated method stub
        return null;
    }


}

LogCat エラーは次のとおりです。

W/dalvikvm(394): threadid=9: thread exiting with uncaught exception (group=0x40015560)
E/AndroidRuntime(394): FATAL EXCEPTION: AsyncTask #1
E/AndroidRuntime(394): java.lang.RuntimeException: An error occured while executing doInBackground()
E/AndroidRuntime(394):  at android.os.AsyncTask$3.done(AsyncTask.java:200)
E/AndroidRuntime(394):  at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274)
E/AndroidRuntime(394):  at java.util.concurrent.FutureTask.setException(FutureTask.java:125)
E/AndroidRuntime(394):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308)
E/AndroidRuntime(394):  at java.util.concurrent.FutureTask.run(FutureTask.java:138)
E/AndroidRuntime(394):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
E/AndroidRuntime(394):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
E/AndroidRuntime(394):  at java.lang.Thread.run(Thread.java:1019)

E/AndroidRuntime(394): Caused by: android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.

E/AndroidRuntime(394):  at android.view.ViewRoot.checkThread(ViewRoot.java:2932)
E/AndroidRuntime(394):  at android.view.ViewRoot.requestLayout(ViewRoot.java:629)
E/AndroidRuntime(394):  at android.view.View.requestLayout(View.java:8267)
E/AndroidRuntime(394):  at android.view.View.requestLayout(View.java:8267)
E/AndroidRuntime(394):  at android.view.View.requestLayout(View.java:8267)
E/AndroidRuntime(394):  at android.view.View.requestLayout(View.java:8267)
E/AndroidRuntime(394):  at android.widget.ScrollView.requestLayout(ScrollView.java:1291)
E/AndroidRuntime(394):  at android.view.View.requestLayout(View.java:8267)
E/AndroidRuntime(394):  at android.widget.RelativeLayout.requestLayout(RelativeLayout.java:257)
E/AndroidRuntime(394):  at android.view.View.requestLayout(View.java:8267)
E/AndroidRuntime(394):  at android.widget.TextView.checkForRelayout(TextView.java:5521)
E/AndroidRuntime(394):  at android.widget.TextView.setText(TextView.java:2724)
E/AndroidRuntime(394):  at android.widget.TextView.setText(TextView.java:2592)
E/AndroidRuntime(394):  at android.widget.TextView.setText(TextView.java:2567)
E/AndroidRuntime(394):  at com.MasterZangetsu.kentrocksoc.nextEvent$eventupdate.doInBackground(nextEvent.java:81)
E/AndroidRuntime(394):  at com.MasterZangetsu.kentrocksoc.nextEvent$eventupdate.doInBackground(nextEvent.java:1)
E/AndroidRuntime(394):  at android.os.AsyncTask$2.call(AsyncTask.java:185)
E/AndroidRuntime(394):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
4

1 に答える 1