AsyncTask Problem (App stürzt ab)

  • Antworten:15
  • OffenNicht stickyNicht beantwortet
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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