AsyncTask Problem (App stürzt ab)

  • Antworten:15
Gelöschter Account
  • Forum-Beiträge: 86

23.08.2013, 23:08:45 via Website

Hey,

mein AsyncTask soll eine ganz einfache Aufgabe erledigen. Er soll eine URL mit einem GET Parameter öffnen und den Inhalt der Seite dann in einen String speichern und in einem TextView ausgeben. Immer wenn ich auf Absenden in der App klicke, stürzt sie ab. Ich poste euch mal meinen Code und hoffe ihr könnt mir sagen was daran nicht funktioniert und warum und falls möglich auch gleich berichtigen. Bitte keine Antworten wie "Google doch mal" Das mache ich schon den ganzen Tag, hab mir mehrere Beispiele angeguckt aber bei mir funktioniert es einfach nicht.

1public class OptionsActivity extends Activity {
2
3 private Button btnSave;
4 public EditText etKlasse;
5 public TextView tvAusgabe;
6
7 /** Called when the activity is first created. */
8 @Override
9 public void onCreate(Bundle savedInstanceState) {
10 super.onCreate(savedInstanceState);
11 setContentView(R.layout.options);
12
13 // TODO Auto-generated method stub
14
15 ActionBar actionBar = getActionBar();
16 if(actionBar != null){
17
18 String abTitel = getString(R.string.action_settings);
19
20 actionBar.setTitle(abTitel);
21 actionBar.setDisplayHomeAsUpEnabled(true);
22 }
23
24 btnSave = (Button) findViewById(R.id.btnOptionsSave);
25 etKlasse = (EditText) findViewById(R.id.etOptionsKlasse);
26 tvAusgabe = (TextView) findViewById(R.id.tvOptionsAusgabe);
27
28 btnSave.setOnClickListener(new View.OnClickListener() {
29 @Override
30 public void onClick(View v) {
31 // TODO Auto-generated method stub
32 String strEingabe = etKlasse.getText().toString();
33
34 if(TextUtils.isEmpty(strEingabe)){
35 Toast.makeText(OptionsActivity.this, "Bitte Abkürzung für deine Klasse eingeben", Toast.LENGTH_LONG).show();
36 }else{
37 new CheckKlassenID().execute(strEingabe);
38 }
39
40 }
41 });
42
43 }
44
45
46
47 @Override
48 public boolean onOptionsItemSelected(MenuItem item){
49
50 if(item.getItemId() == android.R.id.home){
51 onBackPressed();
52 }
53
54 return super.onOptionsItemSelected(item);
55 }
56
57}
58
59
60
61
62class CheckKlassenID extends AsyncTask<String, String, String> {
63
64 public TextView tvAusgabe;
65
66 @Override
67 protected String doInBackground(String... params) {
68 String klasse = params[0];
69 String quellcode = null;
70 URL url = null;
71 try {
72 url = new URL("LINK WEGEN FORUM RAUSGENOMMEN" + klasse);
73 String readLine = null;
74 String sResult = null;
75 BufferedReader buffReader = new BufferedReader (new InputStreamReader (url.openStream ()));
76 while ((readLine = buffReader.readLine ()) != null) {
77 if (sResult == null) {
78 sResult = readLine;
79 }
80 else {
81 sResult = sResult + readLine;
82 }
83 }
84 quellcode = sResult;
85 }
86 catch (MalformedURLException me) {
87 me.printStackTrace();
88 }
89 catch (IOException ioe) {
90 ioe.printStackTrace();
91 }
92
93 return quellcode;
94 }
95
96 @Override
97 protected void onPostExecute(String result) {
98
99 tvAusgabe.setText(result);
100
101 }
102
103 @Override
104 protected void onPreExecute() {
105 }
106
107
108}

Habe mittlerweile echt keinen Plan mehr, also bitte ich um hilfreiche Erklärungen.

Gruß
Phillipp

Antworten
Michele
  • Forum-Beiträge: 1.525

23.08.2013, 23:24:21 via Website

Hallo.

Wie wärs mit der LogCat?

Dann wüsste man mehr wo der Fehler liegt.

Also bitte LogCat von deiner App zeigen.


LG

Antworten
Gelöschter Account
  • Forum-Beiträge: 86

23.08.2013, 23:25:35 via Website

Würde ich euch gerne geben aber die aLogCat App spuckt nix aus und in Eclipse find ich auch nix.

Antworten
Michele
  • Forum-Beiträge: 1.525

23.08.2013, 23:26:38 via Website

Klar spuckt Eclipse was aus.

So oder so.

Google mal wie das geht. Dachte hast genug geooglet? :D


LG

Antworten
impjor
  • Forum-Beiträge: 1.793

23.08.2013, 23:33:16 via App

LogCat findet sicher was...

Aber etwas anderes: Der Quelltext wirst du nie zu Gesicht bekommen.... Zumindest nicht im TextView.

LG

Liebe Grüße impjor.

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

Antworten
Gelöschter Account
  • Forum-Beiträge: 86

23.08.2013, 23:36:01 via Website



Eclipse will aber nicht.

Zum Quelltext: Die Ausgabe ist eh nur eine 3 stellige ID. Die soll später auch gar nicht ausgegeben, sondern weiter verarbeitet werden, aber dafür muss der AsyncTask die ID erstmal holen können.

Antworten
Gelöschter Account
  • Forum-Beiträge: 86

23.08.2013, 23:50:46 via Website

Mein Handy hängt seit Stunden am PC. Keine Ahnung warum das nicht funktioniert. Vielleicht könnt ihr an meinem Code auch so den Fehler sehen.

Antworten
Michele
  • Forum-Beiträge: 1.525

23.08.2013, 23:54:02 via Website

Ohne LogCat wirst du nie zurecht kommen was Fehler angeht.

Lern oder gucke dich um wie es geht bei dir.:D

So ist es viel einfacher als sich den Code anzugucken und zu verstehen obwohl der
nicht von uns ist sondern wem anderes.


LG

— geändert am 23.08.2013, 23:54:12

Antworten
Gelöschter Account
  • Forum-Beiträge: 86

23.08.2013, 23:56:26 via Website

Kann es sein, dass ihr euch den Code nichtmal anguckt? LogCat ist jetzt nunmal nicht möglich und so lang ist der Code nicht. Am Code in doInBackground() kann es nicht liegen, wenn ich den raus nehme, stürzt die App immer noch ab. Also muss es allgemein an meinem AsyncTask liegen.

Antworten
Gelöschter Account
  • Forum-Beiträge: 86

24.08.2013, 00:41:51 via Website

Ich weiß mittlerweile woran es liegt. Es liegt an der Ausgabe von result am Ende. Wenn ich die Zeile weg nehme, schmiert mir die App nicht mehr ab. Versteh aber nicht was daran falsch ist.

Antworten
Gelöschter Account
  • Forum-Beiträge: 86

24.08.2013, 00:57:26 via Website

Was bringt mich dann aber auch net weiter, weil ich net weiß warum das net hinhaut. Auch die Ausgabe eines statischen Textes funktioniert nicht. In einem Beispiel, welches ich im Inet gefunden hab, aber hier net verlinken darf, ist das genau so wie bei mir gemacht.

Antworten
Gelöschter Account
  • Forum-Beiträge: 86

24.08.2013, 01:12:40 via Website

So, Fehler gelöst. Die AsyncTask Klasse war nicht in der Activity Klasse. Da hab ich die Tutorials wohl falsch verstanden bzw übersehen, dass die dadrin und nicht dadrunter ist.

Antworten
Stefan Reichenbach
  • Forum-Beiträge: 45

29.08.2013, 22:51:59 via App

Der Fehler lässt sich eher auf den nicht initialisieren View tvAusgabe zurückführen. Der Task muss nicht in der Klasse sein.

Antworten