Download funktioniert nicht

  • Antworten:36
  • OffenNicht stickyBentwortet
  • Forum-Beiträge: 147

01.01.2014 18:45:58 via Website

Ich habe in meiner App nach dem Tutorial "Download einer Webseite"* einen Download eingebaut.

Ich habe dazu eine neue Klasse "Downloader" angelegt und den Code vom Tut kopiert und dann in meiner Activity:
1private void ladeHerunter(){
2 Downloader downloader = new Downloader(R.id.textView1);
3 downloader.execute("http : //foo.bar"); //Die Leertasten habe ich gemacht, damit ich posten kann...
4}

Eclipse zeigt mir da aber auf Zeile 2 folgenden Fehler:
Multiple markers at this line
- The constructor Downloader(int) is undefined
- webkonsoleVersion cannot be resolved to a
variable

Wie ist es richtig?

*URL zum Tutorial: http://www.androidpit.de/de/android/forum/thread/568854/Tutorial-Download-einer-Webseite
  • Forum-Beiträge: 26

01.01.2014 19:13:55 via App

Wenn du den code vom tutorial kopierst, dann erwartet der konstruktur als Parameter ein onDownloadCompleteListener - Objekt. Du übergibst ihm aber einen integer-wert.
zB.
Downloader.OnDownloadCompleteListener DC = new Down...(){
onDownloadComplete(String result){
textview.setText(result);
}
});
Downloader d = new Download er(DC);
...
LG

— geändert am 01.01.2014 19:17:31

  • Forum-Beiträge: 147

01.01.2014 19:43:00 via Website

Stehpan Graf
Downloader.OnDownloadCompleteListener DC = new Down...(){
onDownloadComplete(String result){
textview.setText(result);
}
});
Downloader d = new Download er(DC);

Wo muss dieser Code hin und was macht er?
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 9.203

01.01.2014 19:43:47 via App

Ähmmm, was du tun sollst?
Eigentlich kannst du alles tun was du willst.
Aber in dem Fall den Code verstehen und benutzen...

LG Pascal //It's not a bug, it's a feature. :) ;)

  • Forum-Beiträge: 147

01.01.2014 19:45:36 via Website

Pascal P.
Aber in dem Fall den Code verstehen und benutzen...
Ich bin noch ziemlich neu in der Android-Programmierung und versteh den Code deshalb nicht...
  • Forum-Beiträge: 26

01.01.2014 19:48:15 via App

Ich nehme an, du hast die Methode ladeHerunter in deiner activity Klasse. Zeile 2 in denen code ersetzen durch diesen code aus downloader.execute machst du d.execute

— geändert am 01.01.2014 19:51:03

  • Forum-Beiträge: 147

01.01.2014 19:51:54 via Website

Stehpan Graf
Ich nehme an, du hast die Methode ladeHerunter in deiner activity Klasse.
Ja. So ist es.
Stephan Graf
Zeile 2 in denen code ersetzen durch diesen code aus downloader.execute machst du d.execute()
Welchen Code muss ich statt Zeile 2 schreiben?
  • Forum-Beiträge: 26

01.01.2014 19:59:54 via App

Also,
die Klasse downloader downloadet Sachen Von einer website deiner Wahl.
sie benötigt dabei aber eine codesequenz, die ihr sagt, was sie mit den gedownloadeten Daten tun soll. dafür stellt sie die Schnittstelle OnDownloadCompletedListener bereit.. diese enthält die Methode onDownloadCompleted(String result). wenn du nun ein Objekt der Schnittstelle erzeugst
musst du diese Methode überschreiben. der Parameter result ist hierbei die Zeichenkette der Website. wenn du nun dieses Objekt als Konstruktor-Parameter übergibst, wird die von dir überschriebene Methode aufgerufen, sobald der download beendet wird. in diese Methode gehört also derjenige code hinein, der die Daten der Website verarbeitet.
  • Forum-Beiträge: 26

01.01.2014 20:17:21 via Website

Hier der Code:

public class DeineActivity extends Activity{

TextView textfeld;//objekt wird in onCreate() erzeugt mittels findViewById();

public void ladeHerunter(){

Downloader.OnDownloadCompleteListener dl = new Downloader.OnDownloadCompleteListener(){ //erzeugt die instanz
//der schnittstelle
onDownloadComplete(String result){ //überschrieben der methode
textfeld.setText(result); //inhalt der website wird in textfeld ausgegeben
}
});

Downloader downloader = new Downloader(dl); //erzwugen des downloaders mit instanz der schnittstelle als parameter

downloader.execxute("Deine url"); //ausführen des downloades. ist er beendet, wird
//die methode onDownloadComplete aufgerufen, und der inhalt der seite ausgegeben
}
}
  • Forum-Beiträge: 147

01.01.2014 20:40:37 via Website

Danke erstmal für den Code!
Aber es kommen immer noch Fehler.
1public void ladeHerunter(){
2 Downloader.OnDownloadCompleteListener dl = new Downloader.OnDownloadCompleteListener(){ //erzeugt die instanz
3 //der schnittstelle
4 onDownloadComplete(String result){ //überschrieben der methode
5 textfeld.setText(result); //inhalt der website wird in textfeld ausgegeben
6 }
7 });
8
9 Downloader downloader = new Downloader(dl); //erzwugen des downloaders mit instanz der schnittstelle als parameter
10
11 downloader.execute("Deine url"); //ausführen des downloades. ist er beendet, wird
12 //die methode onDownloadComplete aufgerufen, und der inhalt der seite ausgegeben
13 }
1. Fehler: Zeile 2: Downloader.OnDownloadCompleteListener cannot be resolved to a
type
2. Fehler: Zeile 7: Syntax error on token ")", delete this token
  • Forum-Beiträge: 147

01.01.2014 21:00:38 via Website

Stehpan Graf
)in Zeile löschen
Ok. Aber der 1. Fehler ist leider immer noch.
  • Forum-Beiträge: 147

01.01.2014 22:45:58 via Website

Stehpan Graf
anstatt OnDownloadCompleteListener nur DownloadCompleteListener
Dann ändert sich der Fehler nur und auf den Zeilen 4 und 5 entstehen auch noch Fehler.

Ich habe jetzt auch noch ein bischen gesucht und das gefunden: http: //developer-blog.net/programmieren/android-client-php-server-kommunikation/
Würde das auch Funktionieren?
  • Forum-Beiträge: 1.793

01.01.2014 23:04:33 via App

Du solltest dir zuerst die Grundlagen von Java aneignen, bevor du mit Android anfängst.

Copy&Paste hilft dir dabei null - schadet eher.


Sonst wüsstest du, dass hier einfach der Rückgabewert der Methode fehlt:
1Downloader.OnDownloadCompleteListener dl = new Downloader.OnDownloadCompleteListener(){
2public void onDownloadComplete(String result){
3 textfeld.setText(result);
4 }
5 });

LG

— geändert am 01.01.2014 23:17:53

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

  • Forum-Beiträge: 147

01.01.2014 23:10:42 via Website

Es kommen aber trotzdem noch Fehler...
Ich probiere jetzt mal das andere aus.
  • Forum-Beiträge: 147

01.01.2014 23:38:21 via Website

samtux
Ich probiere jetzt mal das andere aus.
Das gleiche Problem...
1Error in http connectionandroid.os.NetworkOnMainThreadException
Ich bekomm das mit dem Background-Thread nicht hin :angry:
  • Forum-Beiträge: 147

01.01.2014 23:45:28 via Website

Ich habe gedacht es ist aktuell genug weil oben ja 9. April 2013 steht.
Ich weiß nur nicht wie ich den Downloadvorgang in einem anderen Thread ausführe...
Ich habe mir ein Buch über die Android-Entwicklung zugelegt nur dort wird das auch nicht bzw. sehr kompliziert beschrieben.