Droit Je pense que dans ce cas, vous devriez me considérer comme un noob complet, je suis au-dessus de ma tête.Android, en utilisant une tâche asynchrone pour récupérer le texte de l'URL
J'ai essayé de concocter ce que je comprends à ce sujet ensemble de plusieurs tutoriels partiels traitant chacun d'un aspect différent que je veux faire. En résumé, tout ce que je veux faire, c'est lire du texte à partir d'une URL à afficher dans un affichage de texte, je crois comprendre que j'ai besoin d'une AsyncTask pour le faire depuis la mise à jour 3.0.
Toute aide sur où je me trompe serait super car je ne comprends pas ce qui cause l'erreur et comment réparer.
Je sais que le code contenu dans try et catch du doInBackground fonctionne seul avant la mise à jour 3.0. Si cela aussi doit être modifié pour fonctionner avec un Async mais je ne sais pas. J'imagine aussi que d'autres problèmes surgiront probablement une fois que celui-ci sera trié, si quelqu'un remarque quelque chose d'évident, je serais reconnaissant si vous pouviez le signaler.
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;
}
}
Et l'erreur est 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)