Willy F.
- Forum-Beiträge: 6
02.05.2013, 23:17:50 via Website
02.05.2013 23:17:50 via Website
Hallo,
zu erstmal: Ich bin noch Android-Neuling, habe zwar schon einige einfache Apps erstellt, bis dahin auch eigentlich ganz gut mit meinen Kenntnissen ausgekommen.
Nun zu meiner aktuellen App und Problem. Ich habe vor, mich über HTTP auf einem Server anzumelden und dort einige Dinge/Daten abzufragen. Zum Start der App gibt man die URL des Servers ein und wenn dieser über ein Passwort gesichert (.htaccess) ist, soll man wie im folgendem Code, sprich Dialog, Name und Passwort eingeben. Nachdem man die URL eingegeben hat, wird ein ProgressDialog angezeigt, welcher während des Verbindungsaufbaus angezeigt wird, erst darauf folgt folgender Code.
Damit der ProgressDialog angezeigt wird, musste ich
Problem: Sobald der AlertDialog geladen wird, stürzt die App ab, dies aber auch eher ungewöhnlich, weil im Emulator (Android 4.0) geht alles, an meinem Nexus 7 nicht Außerdem ist komisch, dass die App nur abstürtzt, wenn ich nach dem Start direkt die URL eingebe, wenn ich etwas in der App mache und dann die URL eingebe, funktioniert es - meistens.
Ich hoffe Ihr könnt mir helfen. Ich bin für jede Antwort dankbar
mfg Willy
EDIT (03.05.2013 15.48)
Habe mein Nexus 7 mal über USB mit Eclipse verbunden und dort die App ausgeführt. Nachfolgend ist der Errorlog.
EDIT (03.05.2013 16.44)
Habe mal noch ein bisschen rumprobiert und festgestellt, dass wenn ich das Layout "dialog_signin" (welches in setView() gesetzt ist) verändere und meine 2 EditText entnehme, stürtzt die App nicht ab. Nachfolgend noch mein "dialog_signin.xml":
zu erstmal: Ich bin noch Android-Neuling, habe zwar schon einige einfache Apps erstellt, bis dahin auch eigentlich ganz gut mit meinen Kenntnissen ausgekommen.
Nun zu meiner aktuellen App und Problem. Ich habe vor, mich über HTTP auf einem Server anzumelden und dort einige Dinge/Daten abzufragen. Zum Start der App gibt man die URL des Servers ein und wenn dieser über ein Passwort gesichert (.htaccess) ist, soll man wie im folgendem Code, sprich Dialog, Name und Passwort eingeben. Nachdem man die URL eingegeben hat, wird ein ProgressDialog angezeigt, welcher während des Verbindungsaufbaus angezeigt wird, erst darauf folgt folgender Code.
Damit der ProgressDialog angezeigt wird, musste ich
1new Thread() {
2 public void run() {
3 Looper.prepare();
4[...]
5 Looper.loop();
6 }
7}.start();
um den AlertDialog legen. Nun aber hat dieser ein Problem mit "builder.setView(layout);". Kommentiere ich diese Zeile aus, funktioniert alles einwandfrei, leider habe ich dann meine Eingabefelder nicht.2 public void run() {
3 Looper.prepare();
4[...]
5 Looper.loop();
6 }
7}.start();
1new Thread() {
2 public void run() {
3 Looper.prepare();
4 getApplicationContext();
5 LayoutInflater inflater = (LayoutInflater) MainActivity.this.getSystemService (Context.LAYOUT_INFLATER_SERVICE);
6 final View layout = inflater.inflate(R.layout.dialog_signin, null);
7 final Builder builder = new AlertDialog.Builder(MainActivity.this);
8 builder.setTitle("Authentifikation");
9 builder.setMessage("Name und Passwort eingeben");
10 builder.setView(layout);
11 builder.setCancelable(false);
12 builder.setPositiveButton("Anmelden", new OnClickListener() {
13 public void onClick(DialogInterface arg0, int arg1) {
14 EditText signin_username = (EditText) layout.findViewById(R.id.signin_username);
15 EditText signin_password = (EditText) layout.findViewById(R.id.signin_password);
16 [... verarbeite signin_username und signin_password ...]
17 }
18 });
19 builder.setNegativeButton("Abbrechen", new OnClickListener() {
20 public void onClick(DialogInterface dialog, int which) {
21 dialog.cancel();
22 }
23 });
24 builder.show();
25 Looper.loop();
26 }
27}.start();
2 public void run() {
3 Looper.prepare();
4 getApplicationContext();
5 LayoutInflater inflater = (LayoutInflater) MainActivity.this.getSystemService (Context.LAYOUT_INFLATER_SERVICE);
6 final View layout = inflater.inflate(R.layout.dialog_signin, null);
7 final Builder builder = new AlertDialog.Builder(MainActivity.this);
8 builder.setTitle("Authentifikation");
9 builder.setMessage("Name und Passwort eingeben");
10 builder.setView(layout);
11 builder.setCancelable(false);
12 builder.setPositiveButton("Anmelden", new OnClickListener() {
13 public void onClick(DialogInterface arg0, int arg1) {
14 EditText signin_username = (EditText) layout.findViewById(R.id.signin_username);
15 EditText signin_password = (EditText) layout.findViewById(R.id.signin_password);
16 [... verarbeite signin_username und signin_password ...]
17 }
18 });
19 builder.setNegativeButton("Abbrechen", new OnClickListener() {
20 public void onClick(DialogInterface dialog, int which) {
21 dialog.cancel();
22 }
23 });
24 builder.show();
25 Looper.loop();
26 }
27}.start();
Problem: Sobald der AlertDialog geladen wird, stürzt die App ab, dies aber auch eher ungewöhnlich, weil im Emulator (Android 4.0) geht alles, an meinem Nexus 7 nicht Außerdem ist komisch, dass die App nur abstürtzt, wenn ich nach dem Start direkt die URL eingebe, wenn ich etwas in der App mache und dann die URL eingebe, funktioniert es - meistens.
Ich hoffe Ihr könnt mir helfen. Ich bin für jede Antwort dankbar
mfg Willy
EDIT (03.05.2013 15.48)
Habe mein Nexus 7 mal über USB mit Eclipse verbunden und dort die App ausgeführt. Nachfolgend ist der Errorlog.
105-03 15:45:23.497: E/AndroidRuntime(30614): FATAL EXCEPTION: Thread-41774
205-03 15:45:23.497: E/AndroidRuntime(30614): android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
305-03 15:45:23.497: E/AndroidRuntime(30614): at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:4746)
405-03 15:45:23.497: E/AndroidRuntime(30614): at android.view.ViewRootImpl.invalidateChildInParent(ViewRootImpl.java:854)
505-03 15:45:23.497: E/AndroidRuntime(30614): at android.view.ViewGroup.invalidateChild(ViewGroup.java:4075)
605-03 15:45:23.497: E/AndroidRuntime(30614): at android.view.View.invalidate(View.java:10386)
705-03 15:45:23.497: E/AndroidRuntime(30614): at android.view.View.invalidate(View.java:10341)
805-03 15:45:23.497: E/AndroidRuntime(30614): at android.widget.TextView.updateAfterEdit(TextView.java:7253)
905-03 15:45:23.497: E/AndroidRuntime(30614): at android.widget.Editor.finishBatchEdit(Editor.java:1081)
1005-03 15:45:23.497: E/AndroidRuntime(30614): at android.widget.Editor.endBatchEdit(Editor.java:1064)
1105-03 15:45:23.497: E/AndroidRuntime(30614): at android.widget.TextView.endBatchEdit(TextView.java:5712)
1205-03 15:45:23.497: E/AndroidRuntime(30614): at com.android.internal.widget.EditableInputConnection.endBatchEdit(EditableInputConnection.java:77)
1305-03 15:45:23.497: E/AndroidRuntime(30614): at android.view.inputmethod.BaseInputConnection.finishComposingText(BaseInputConnection.java:271)
1405-03 15:45:23.497: E/AndroidRuntime(30614): at android.view.inputmethod.InputMethodManager.checkFocusNoStartInput(InputMethodManager.java:1300)
1505-03 15:45:23.497: E/AndroidRuntime(30614): at android.view.inputmethod.InputMethodManager.onWindowFocus(InputMethodManager.java:1344)
1605-03 15:45:23.497: E/AndroidRuntime(30614): at android.view.ViewRootImpl$ViewRootHandler.handleMessage(ViewRootImpl.java:2934)
1705-03 15:45:23.497: E/AndroidRuntime(30614): at android.os.Handler.dispatchMessage(Handler.java:99)
1805-03 15:45:23.497: E/AndroidRuntime(30614): at android.os.Looper.loop(Looper.java:137)
1905-03 15:45:23.497: E/AndroidRuntime(30614): at de.ziix.controlcenter.MainActivity$4.run(MainActivity.java:413)
2005-03 15:45:24.317: E/WindowManager(30614): Activity de.ziix.controlcenter.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{42717b68 V.E..... R......D 0,0-640,128} that was originally added here
2105-03 15:45:24.317: E/WindowManager(30614): android.view.WindowLeaked: Activity de.ziix.controlcenter.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{42717b68 V.E..... R......D 0,0-640,128} that was originally added here
2205-03 15:45:24.317: E/WindowManager(30614): at android.view.ViewRootImpl.<init>(ViewRootImpl.java:354)
2305-03 15:45:24.317: E/WindowManager(30614): at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:216)
2405-03 15:45:24.317: E/WindowManager(30614): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
2505-03 15:45:24.317: E/WindowManager(30614): at android.app.Dialog.show(Dialog.java:281)
2605-03 15:45:24.317: E/WindowManager(30614): at de.ziix.controlcenter.MainActivity.connectToIP(MainActivity.java:282)
2705-03 15:45:24.317: E/WindowManager(30614): at de.ziix.controlcenter.MainActivity$2.onClick(MainActivity.java:239)
2805-03 15:45:24.317: E/WindowManager(30614): at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:166)
2905-03 15:45:24.317: E/WindowManager(30614): at android.os.Handler.dispatchMessage(Handler.java:99)
3005-03 15:45:24.317: E/WindowManager(30614): at android.os.Looper.loop(Looper.java:137)
3105-03 15:45:24.317: E/WindowManager(30614): at android.app.ActivityThread.main(ActivityThread.java:5041)
3205-03 15:45:24.317: E/WindowManager(30614): at java.lang.reflect.Method.invokeNative(Native Method)
3305-03 15:45:24.317: E/WindowManager(30614): at java.lang.reflect.Method.invoke(Method.java:511)
3405-03 15:45:24.317: E/WindowManager(30614): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
3505-03 15:45:24.317: E/WindowManager(30614): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
3605-03 15:45:24.317: E/WindowManager(30614): at dalvik.system.NativeStart.main(Native Method)
3705-03 15:45:24.317: E/WindowManager(30614): Activity de.[...].MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{4277abd8 V.E..... R.....ID 0,0-772,426} that was originally added here
3805-03 15:45:24.317: E/WindowManager(30614): android.view.WindowLeaked: Activity de.ziix.controlcenter.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{4277abd8 V.E..... R.....ID 0,0-772,426} that was originally added here
3905-03 15:45:24.317: E/WindowManager(30614): at android.view.ViewRootImpl.<init>(ViewRootImpl.java:354)
4005-03 15:45:24.317: E/WindowManager(30614): at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:216)
4105-03 15:45:24.317: E/WindowManager(30614): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
4205-03 15:45:24.317: E/WindowManager(30614): at android.app.Dialog.show(Dialog.java:281)
4305-03 15:45:24.317: E/WindowManager(30614): at android.app.AlertDialog$Builder.show(AlertDialog.java:951)
4405-03 15:45:24.317: E/WindowManager(30614): at de.[...].MainActivity$4.run(MainActivity.java:379)
205-03 15:45:23.497: E/AndroidRuntime(30614): android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
305-03 15:45:23.497: E/AndroidRuntime(30614): at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:4746)
405-03 15:45:23.497: E/AndroidRuntime(30614): at android.view.ViewRootImpl.invalidateChildInParent(ViewRootImpl.java:854)
505-03 15:45:23.497: E/AndroidRuntime(30614): at android.view.ViewGroup.invalidateChild(ViewGroup.java:4075)
605-03 15:45:23.497: E/AndroidRuntime(30614): at android.view.View.invalidate(View.java:10386)
705-03 15:45:23.497: E/AndroidRuntime(30614): at android.view.View.invalidate(View.java:10341)
805-03 15:45:23.497: E/AndroidRuntime(30614): at android.widget.TextView.updateAfterEdit(TextView.java:7253)
905-03 15:45:23.497: E/AndroidRuntime(30614): at android.widget.Editor.finishBatchEdit(Editor.java:1081)
1005-03 15:45:23.497: E/AndroidRuntime(30614): at android.widget.Editor.endBatchEdit(Editor.java:1064)
1105-03 15:45:23.497: E/AndroidRuntime(30614): at android.widget.TextView.endBatchEdit(TextView.java:5712)
1205-03 15:45:23.497: E/AndroidRuntime(30614): at com.android.internal.widget.EditableInputConnection.endBatchEdit(EditableInputConnection.java:77)
1305-03 15:45:23.497: E/AndroidRuntime(30614): at android.view.inputmethod.BaseInputConnection.finishComposingText(BaseInputConnection.java:271)
1405-03 15:45:23.497: E/AndroidRuntime(30614): at android.view.inputmethod.InputMethodManager.checkFocusNoStartInput(InputMethodManager.java:1300)
1505-03 15:45:23.497: E/AndroidRuntime(30614): at android.view.inputmethod.InputMethodManager.onWindowFocus(InputMethodManager.java:1344)
1605-03 15:45:23.497: E/AndroidRuntime(30614): at android.view.ViewRootImpl$ViewRootHandler.handleMessage(ViewRootImpl.java:2934)
1705-03 15:45:23.497: E/AndroidRuntime(30614): at android.os.Handler.dispatchMessage(Handler.java:99)
1805-03 15:45:23.497: E/AndroidRuntime(30614): at android.os.Looper.loop(Looper.java:137)
1905-03 15:45:23.497: E/AndroidRuntime(30614): at de.ziix.controlcenter.MainActivity$4.run(MainActivity.java:413)
2005-03 15:45:24.317: E/WindowManager(30614): Activity de.ziix.controlcenter.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{42717b68 V.E..... R......D 0,0-640,128} that was originally added here
2105-03 15:45:24.317: E/WindowManager(30614): android.view.WindowLeaked: Activity de.ziix.controlcenter.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{42717b68 V.E..... R......D 0,0-640,128} that was originally added here
2205-03 15:45:24.317: E/WindowManager(30614): at android.view.ViewRootImpl.<init>(ViewRootImpl.java:354)
2305-03 15:45:24.317: E/WindowManager(30614): at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:216)
2405-03 15:45:24.317: E/WindowManager(30614): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
2505-03 15:45:24.317: E/WindowManager(30614): at android.app.Dialog.show(Dialog.java:281)
2605-03 15:45:24.317: E/WindowManager(30614): at de.ziix.controlcenter.MainActivity.connectToIP(MainActivity.java:282)
2705-03 15:45:24.317: E/WindowManager(30614): at de.ziix.controlcenter.MainActivity$2.onClick(MainActivity.java:239)
2805-03 15:45:24.317: E/WindowManager(30614): at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:166)
2905-03 15:45:24.317: E/WindowManager(30614): at android.os.Handler.dispatchMessage(Handler.java:99)
3005-03 15:45:24.317: E/WindowManager(30614): at android.os.Looper.loop(Looper.java:137)
3105-03 15:45:24.317: E/WindowManager(30614): at android.app.ActivityThread.main(ActivityThread.java:5041)
3205-03 15:45:24.317: E/WindowManager(30614): at java.lang.reflect.Method.invokeNative(Native Method)
3305-03 15:45:24.317: E/WindowManager(30614): at java.lang.reflect.Method.invoke(Method.java:511)
3405-03 15:45:24.317: E/WindowManager(30614): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
3505-03 15:45:24.317: E/WindowManager(30614): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
3605-03 15:45:24.317: E/WindowManager(30614): at dalvik.system.NativeStart.main(Native Method)
3705-03 15:45:24.317: E/WindowManager(30614): Activity de.[...].MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{4277abd8 V.E..... R.....ID 0,0-772,426} that was originally added here
3805-03 15:45:24.317: E/WindowManager(30614): android.view.WindowLeaked: Activity de.ziix.controlcenter.MainActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{4277abd8 V.E..... R.....ID 0,0-772,426} that was originally added here
3905-03 15:45:24.317: E/WindowManager(30614): at android.view.ViewRootImpl.<init>(ViewRootImpl.java:354)
4005-03 15:45:24.317: E/WindowManager(30614): at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:216)
4105-03 15:45:24.317: E/WindowManager(30614): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
4205-03 15:45:24.317: E/WindowManager(30614): at android.app.Dialog.show(Dialog.java:281)
4305-03 15:45:24.317: E/WindowManager(30614): at android.app.AlertDialog$Builder.show(AlertDialog.java:951)
4405-03 15:45:24.317: E/WindowManager(30614): at de.[...].MainActivity$4.run(MainActivity.java:379)
EDIT (03.05.2013 16.44)
Habe mal noch ein bisschen rumprobiert und festgestellt, dass wenn ich das Layout "dialog_signin" (welches in setView() gesetzt ist) verändere und meine 2 EditText entnehme, stürtzt die App nicht ab. Nachfolgend noch mein "dialog_signin.xml":
1<?xml version="1.0" encoding="utf-8"?>
2<LinearLayout xmlns:android="h_ttp://schemas.android.com/apk/res/android"
3 android:orientation="vertical"
4 android:layout_width="wrap_content"
5 android:layout_height="wrap_content"
6 android:id="@+id/dialog_signin">
7
8 <EditText
9 android:id="@+id/signin_username"
10 android:inputType="text"
11 android:layout_width="match_parent"
12 android:layout_height="wrap_content"
13 android:layout_marginTop="16dp"
14 android:layout_marginLeft="4dp"
15 android:layout_marginRight="4dp"
16 android:layout_marginBottom="4dp"
17 android:hint="@string/username" />
18
19 <EditText
20 android:id="@+id/signin_password"
21 android:inputType="textPassword"
22 android:layout_width="match_parent"
23 android:layout_height="wrap_content"
24 android:layout_marginTop="4dp"
25 android:layout_marginLeft="4dp"
26 android:layout_marginRight="4dp"
27 android:layout_marginBottom="16dp"
28 android:hint="@string/password" />
29</LinearLayout>
2<LinearLayout xmlns:android="h_ttp://schemas.android.com/apk/res/android"
3 android:orientation="vertical"
4 android:layout_width="wrap_content"
5 android:layout_height="wrap_content"
6 android:id="@+id/dialog_signin">
7
8 <EditText
9 android:id="@+id/signin_username"
10 android:inputType="text"
11 android:layout_width="match_parent"
12 android:layout_height="wrap_content"
13 android:layout_marginTop="16dp"
14 android:layout_marginLeft="4dp"
15 android:layout_marginRight="4dp"
16 android:layout_marginBottom="4dp"
17 android:hint="@string/username" />
18
19 <EditText
20 android:id="@+id/signin_password"
21 android:inputType="textPassword"
22 android:layout_width="match_parent"
23 android:layout_height="wrap_content"
24 android:layout_marginTop="4dp"
25 android:layout_marginLeft="4dp"
26 android:layout_marginRight="4dp"
27 android:layout_marginBottom="16dp"
28 android:hint="@string/password" />
29</LinearLayout>
— geändert am 03.05.2013, 16:44:35
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.