[App] Eigener Stundenplaner

  • Antworten:75
  • OffenNicht stickyNicht beantwortet
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 9.204

06.04.2013 13:40:40 via Website

Der AsyncTask übergibt deinen String in die Funktion onPostExcute(String result).
Dort machst du dann:
1@Override
2 protected void onPostExecute(String result) {
3 TextView txt = (TextView) findViewById(R.id.output);
4 txt.setText(result); //Der String wird in die TextView gesetzt.
5 }
Hoffe das hilft, hatte nämlich auch schon Probleme damit.

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

Gelöschter Account
  • Forum-Beiträge: 33

06.04.2013 17:02:16 via Website

Log-Cat gibt mir folgendes zurück:

04-06 14:58:24.768: E/AndroidRuntime(370): FATAL EXCEPTION: Thread-10
04-06 14:58:24.768: E/AndroidRuntime(370): java.lang.IllegalArgumentException: Illegal character in query at index 74: https://office.kis.uni-kl.de/views/pia/pia.asp?size=1680&u=test&p=1234&login=%3E+Login
04-06 14:58:24.768: E/AndroidRuntime(370): at java.net.URI.create(URI.java:776)
04-06 14:58:24.768: E/AndroidRuntime(370): at org.apache.http.client.methods.HttpGet.<init>(HttpGet.java:75)
04-06 14:58:24.768: E/AndroidRuntime(370): at com.example.test.MainActivity.doRequest(MainActivity.java:412)
04-06 14:58:24.768: E/AndroidRuntime(370): at com.example.test.MainActivity.initview(MainActivity.java:368)
04-06 14:58:24.768: E/AndroidRuntime(370): at com.example.test.MainActivity.run(MainActivity.java:354)
04-06 14:58:24.768: E/AndroidRuntime(370): at java.lang.Thread.run(Thread.java:1019)
04-06 14:58:27.286: E/WindowManager(370): Activity com.example.test.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@405243d8 that was originally added here
04-06 14:58:27.286: E/WindowManager(370): android.view.WindowLeaked: Activity com.example.test.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@405243d8 that was originally added here
04-06 14:58:27.286: E/WindowManager(370): at android.view.ViewRoot.<init>(ViewRoot.java:258)
04-06 14:58:27.286: E/WindowManager(370): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148)
04-06 14:58:27.286: E/WindowManager(370): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
04-06 14:58:27.286: E/WindowManager(370): at android.view.Window$LocalWindowManager.addView(Window.java:424)
04-06 14:58:27.286: E/WindowManager(370): at android.app.Dialog.show(Dialog.java:241)
04-06 14:58:27.286: E/WindowManager(370): at com.example.test.MainActivity.initthread(MainActivity.java:348)
04-06 14:58:27.286: E/WindowManager(370): at com.example.test.MainActivity.onCreate(MainActivity.java:245)
04-06 14:58:27.286: E/WindowManager(370): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
04-06 14:58:27.286: E/WindowManager(370): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
04-06 14:58:27.286: E/WindowManager(370): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
04-06 14:58:27.286: E/WindowManager(370): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
04-06 14:58:27.286: E/WindowManager(370): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
04-06 14:58:27.286: E/WindowManager(370): at android.os.Handler.dispatchMessage(Handler.java:99)
04-06 14:58:27.286: E/WindowManager(370): at android.os.Looper.loop(Looper.java:123)
04-06 14:58:27.286: E/WindowManager(370): at android.app.ActivityThread.main(ActivityThread.java:3683)
04-06 14:58:27.286: E/WindowManager(370): at java.lang.reflect.Method.invokeNative(Native Method)
04-06 14:58:27.286: E/WindowManager(370): at java.lang.reflect.Method.invoke(Method.java:507)
04-06 14:58:27.286: E/WindowManager(370): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
04-06 14:58:27.286: E/WindowManager(370): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
04-06 14:58:27.286: E/WindowManager(370): at dalvik.system.NativeStart.main(Native Method)

Ich kann damit leider bisher rein gar nichts anfangen :(
Ok, anscheinend hat es was mit meinem Link zu tun?! Nur wenn ich den ganz normal im Browser ausführe funktionert er :mad:

— geändert am 06.04.2013 17:06:26

Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 9.204

06.04.2013 17:31:43 via App

Ich werde es später nochmal testen.

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

Gelöschter Account
  • Forum-Beiträge: 33

06.04.2013 18:00:17 via Website

Also mit http funktionert es problemlos, auch wenn ich "https://www.google.de/ " benutze, funktioniert zumindest das laden des Quelltextes von dort
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 9.204

06.04.2013 18:07:33 via Website

Komisch aber gut, dass es nun Funktioniert :)

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

Gelöschter Account
  • Forum-Beiträge: 33

06.04.2013 18:40:53 via Website

Muss jetzt halt mal noch schaun das es auch mit dem Login funktioniert :)
Gelöschter Account
  • Forum-Beiträge: 33

07.04.2013 10:57:50 via Website

Eine vll eher allgemeinere Frage an euch.
Ich hab folgendes Problem, also meine App läuft wunderbar im Emulator. Wenn ich jetzt meinen PC auschalte und paar Minuten später wieder die App testen will, bekomme ich eine FATAL EXPEPTION ?!
Woran kann das liegen?

— geändert am 07.04.2013 10:58:21

Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 9.204

07.04.2013 12:29:10 via Website

Also verstehe ich das richtig, im Emulator tut die App und auf deinem Handy nicht?
Hast du mal die Build Api überprüft, und geschaut welche Firmware dein Handy hat?
Sind noch irgendwelche Abhängigkeiten vom Betriebsystem in der App?
Poste bitte mal den Log von LogCat.
Vielleicht liegt es daran.

— geändert am 07.04.2013 12:30:42

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

Gelöschter Account
  • Forum-Beiträge: 33

07.04.2013 14:42:19 via Website

Da hast du mich gerade falsch verstanden. Ich teste die App momentan nur aufm PC,da mein Handy den Geist aufgegeben hat.
Die Sache ist das wenn ich die App im AVD laufen lassen funktioniert sie. Schalte ich jetzt den PC aus, und mache ich sagen wir ne Stunde später wieder an und teste die App, dann stürzt sie mir ab?!
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 9.204

07.04.2013 14:48:54 via Website

OK, was sagt jetzt LogCat?
Habe keine Ahnung wie so etwas passieren kann.
Wenn du die App mit Eclipse neu aufspielst, tut es dann wieder?
AVD hat halt manchmal Probleme, das darfst du nicht ernst nehmen.
Auf den Handy läufts devinitiv besser.

— geändert am 07.04.2013 14:49:56

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

Gelöschter Account
  • Forum-Beiträge: 33

07.04.2013 17:01:22 via Website

Also momentan funktioniert es wieder, deshalb kann ich jetzt auch nichts von LogCat posten.
Mal noch was anderes bei dem ich einen Denkanstoß von euch gebrauchen könnte. Ich versuch es mal zu beschreiben.
Der String den ich auslese hat folgenden Aufbau:
1<table>
2<tr01>
3 <td01>
4 </td01>
5 <td02>
6 Wert1
7 </td02>
8 <td03>
9 Wert2
10 </td03>
11 <td04>
12 Wert3
13 </td04>

14 <td05>
15 </td05>
16</tr01>
17<tr02>
18...
19</tr02>
20...
21</table>
Die Anzahl der <tr>-Tags ist unterschiedlich, sprich je nach Anzahl von Unterrichtsstunden hab ich dementsprechend eine Anzahl von <tr>-Tags im Quellcode.
Die Daten die ich benötige, befinden sich jeweils in den <td>-Tags die ich fett markiert habe. Wie könnte ich jetzt eine Methode schreiben bzw wie könnte sie aussehen, die mir unabhängig von der Anzahl der <tr>-Tags diese Werte zurückgibt. Kann man sowas gut mit Rekursion lösen?

— geändert am 07.04.2013 17:02:34

Gelöschter Account
  • Forum-Beiträge: 33

08.04.2013 14:53:31 via Website

Wenn ich mir mit dem Parser eine XML-Datei erstellt habe, wo speicher ich die intern am besten hin, bzw wo ist es erlaubt hinzuspeichern und wo nicht?
Gelöschter Account
  • Forum-Beiträge: 33

15.04.2013 16:02:38 via Website

So ich steh mal wieder vor einem neuen Problem.
Ich lade mir in einer zweiten Activity den Quellcode der Seite herunter.
Und durchlaufen den mit einer While-Schleife.
Jedoch bekomme ich immer die Fehlermeldung "Activity is not responding".
Muss ich die ganze Verarbeitung des Quelltextes auch in nen Thread auslagern? Normalerweise sollte doch
so ne kleine While-Schleife da keine Probleme machen oder?
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 9.204

15.04.2013 16:12:13 via Website

Du solltest das doch in einem Thread machen, das system ist mit der while schleife sehr beschäftigt.
Probier das mal mit vielleicht hilft das.

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

Gelöschter Account
  • Forum-Beiträge: 33

15.04.2013 16:41:20 via Website

Ah ok, ich dachte das mit dem AsyncTask bezieht sich nur auf das "herunterladen" des Quellcodes von der Seite.
Zu dem AsyncTast hätte ich noch eine Frage. Ich beziehe den Quellcode gerade so:
1public class Seitenparser extends Activity implements Runnable {
2 ProgressDialog progress;
3 String result = null;
4 //String string_beschnitten_anfang_ende;
5 /** Called when the activity is first created. */
6 @Override
7 public void onCreate(Bundle savedInstanceState) {
8 super.onCreate(savedInstanceState);
9 setContentView(R.layout.parser);
10
11 //THREAD AUFRUFEN
12 initthread();
13 // TODO Auto-generated method stub
14 }
15
16 public void initthread(){
17 progress = new ProgressDialog(Seitenparser.this);
18 progress.setTitle("Hinweis");
19 progress.setMessage("Daten werden geladen");
20 progress.show();
21 Thread thread = new Thread(this);
22 thread.start();
23 }
24
25 public void run() {
26 initview();
27 handler.sendEmptyMessage(0);
28 }
29
30 private Handler handler = new Handler() {
31 @Override
32 public void handleMessage(Message ms) {
33 progress.dismiss();
34 TextView textView1 = (TextView) findViewById(R.id.textView1);
35 textView1.setText(result);
36 }
37 };
38
39 private void initview() {
40 result = doRequest();
41 }
42
43 private String doRequest() {
44 String result = null;
45 HttpResponse response = null;
46
47 HttpGet get = new HttpGet("http://google.de");
48 DefaultHttpClient client = new DefaultHttpClient();
49 ResponseHandler<String> responsehandler = new BasicResponseHandler();
50 try {
51 response = client.execute(get);
52 }
53 catch(ClientProtocolException e ) {
54 e.printStackTrace();
55 }
56 catch(IOException e) {
57 e.printStackTrace();
58 }
59
60 int statuscode = response.getStatusLine().getStatusCode();
61
62 if (statuscode == 200) {
63 try {
64 result = responsehandler.handleResponse(response);
65 }
66 catch(ClientProtocolException e){
67 e.printStackTrace();
68 }
69 catch(IOException e) {
70 e.printStackTrace();
71 }
72 }
73 return result;
74 }

Nur wenn ich danach etwas mit dem String machen will, passiert nichts. Wie kann ich den Prüfen ob der Thread noch läuft/ beendet ist? Ich hab da was mit "join" gelesen. Nur weiß ich nicht an welcher Stelle in dem Quelltext ich das prüfen kann?

— geändert am 15.04.2013 16:42:40

Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 9.204

15.04.2013 18:10:29 via Website

1if(!thread.isAlive())
2{
3//Wenn der thread nich mehr läuft
4
5}

Aber am Besten du nutzt ein Interface für ein Callback oder einen FutureTask.

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