Custom DialogPreference

  • Antworten:9
  • Bentwortet
Johannes
  • Forum-Beiträge: 49

27.10.2011, 18:04:59 via Website

Hey,
ich habe so eine listView und möchte wenn man draufklickt so nen eigenen preference dialog starten, also so nen dialog der den hinteren screen noch ein bisschen sichtbar lässt. ich habe jetzt schon so viele foren durchforstet allerdings bin ich nicht wirklich fündig geworden. Gibts denn irgendwo im Web ein Beispiel, das zb. 3 so textviews beinhaltet oder so? ich wäre euch echt super dankebar!!

Grüße,
Johannes

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

27.10.2011, 18:40:25 via Website

mach dir einen ganz normalen custom dialog.

du könntest auch eine activity erstellen und als theme Theme.Dialog angeben.

darüber findest du unzählige seiten im netz

swordiApps Blog - Website

Antworten
Johannes
  • Forum-Beiträge: 49

30.10.2011, 16:55:16 via Website

hm ja aber ich bekomm das irgendwie nicht hin, hab mal versucht nen ganz einfachen zu machen mit nur einem textview:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_props"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
>

<TextView android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:textColor="#FFF"
/>
</LinearLayout>


und so will ich den dann erzeugen aufrufen:

static final int DIALOG_PROPS_ID = 0;

protected Dialog onCreateDialog(int id) {
Dialog dialog;
switch(id) {
case DIALOG_PROPS_ID:
Context mContext = getApplicationContext();
dialog = new Dialog(mContext);
dialog.setContentView(R.layout.dialogprops);
dialog.setTitle("Custom Dialog");
TextView text = (TextView) dialog.findViewById(R.id.text);
text.setText("Hello, this is a custom dialog!");
break;

default:
dialog = null;
}
return dialog;
}


showDialog(DIALOG_PROPS_ID);

aber der stüzt immer ab wenn ich die showDialog methode aufrufe... :( könnt ihr mir da weiterhelfen?

muss ich da noch was ins manifest schreiben?

vielen Dank!

Antworten
Ansgar M
  • Forum-Beiträge: 1.544

30.10.2011, 19:52:36 via Website

Hm,
"stürzt immer ab" bringt nicht sehr viel :P Was sagt das Logcat?
Lg Ansgar

Antworten
Johannes
  • Forum-Beiträge: 49

31.10.2011, 15:43:09 via Website

10-31 14:40:37.682: DEBUG/dalvikvm(102): GC freed 43 objects / 1584 bytes in 80ms
10-31 14:40:39.591: INFO/ActivityManager(52): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.AndroidTest1/.AndroidTest1Activity }
10-31 14:40:41.900: INFO/ActivityManager(52): Starting activity: Intent { cmp=com.AndroidTest1/.actAdmin }
10-31 14:40:42.031: DEBUG/dalvikvm(258): GC freed 892 objects / 68776 bytes in 77ms
10-31 14:40:42.581: INFO/ActivityManager(52): Displayed activity com.AndroidTest1/.actAdmin: 663 ms (total 2913 ms)
10-31 14:40:47.770: DEBUG/dalvikvm(102): GC freed 135 objects / 6456 bytes in 136ms
10-31 14:40:58.291: DEBUG/AndroidRuntime(258): Shutting down VM
10-31 14:40:58.291: WARN/dalvikvm(258): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
10-31 14:40:58.291: ERROR/AndroidRuntime(258): Uncaught handler: thread main exiting due to uncaught exception
10-31 14:40:58.311: ERROR/AndroidRuntime(258): java.lang.RuntimeException: Binary XML file line #15: You must supply a layout_width attribute.
10-31 14:40:58.311: ERROR/AndroidRuntime(258): at android.content.res.TypedArray.getLayoutDimension(TypedArray.java:438)
10-31 14:40:58.311: ERROR/AndroidRuntime(258): at android.view.ViewGroup$LayoutParams.setBaseAttributes(ViewGroup.java:3467)
10-31 14:40:58.311: ERROR/AndroidRuntime(258): at android.view.ViewGroup$MarginLayoutParams.<init>(ViewGroup.java:3547)
10-31 14:40:58.311: ERROR/AndroidRuntime(258): at android.widget.LinearLayout$LayoutParams.<init>(LinearLayout.java:1265)
10-31 14:40:58.311: ERROR/AndroidRuntime(258): at android.widget.LinearLayout.generateLayoutParams(LinearLayout.java:1191)
10-31 14:40:58.311: ERROR/AndroidRuntime(258): at android.widget.LinearLayout.generateLayoutParams(LinearLayout.java:45)
10-31 14:40:58.311: ERROR/AndroidRuntime(258): at android.view.LayoutInflater.rInflate(LayoutInflater.java:620)
10-31 14:40:58.311: ERROR/AndroidRuntime(258): at android.view.LayoutInflater.rInflate(LayoutInflater.java:621)
10-31 14:40:58.311: ERROR/AndroidRuntime(258): at android.view.LayoutInflater.rInflate(LayoutInflater.java:621)
10-31 14:40:58.311: ERROR/AndroidRuntime(258): at android.view.LayoutInflater.inflate(LayoutInflater.java:407)
10-31 14:40:58.311: ERROR/AndroidRuntime(258): at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
10-31 14:40:58.311: ERROR/AndroidRuntime(258): at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
10-31 14:40:58.311: ERROR/AndroidRuntime(258): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:198)
10-31 14:40:58.311: ERROR/AndroidRuntime(258): at android.app.Dialog.setContentView(Dialog.java:422)
10-31 14:40:58.311: ERROR/AndroidRuntime(258): at com.AndroidTest1.actAdmin.onCreateDialog(actAdmin.java:94)
10-31 14:40:58.311: ERROR/AndroidRuntime(258): at android.app.Activity.createDialog(Activity.java:869)
10-31 14:40:58.311: ERROR/AndroidRuntime(258): at android.app.Activity.showDialog(Activity.java:2483)
10-31 14:40:58.311: ERROR/AndroidRuntime(258): at com.AndroidTest1.actAdmin.onClick(actAdmin.java:80)
10-31 14:40:58.311: ERROR/AndroidRuntime(258): at android.view.View.performClick(View.java:2364)
10-31 14:40:58.311: ERROR/AndroidRuntime(258): at android.view.View.onTouchEvent(View.java:4179)
10-31 14:40:58.311: ERROR/AndroidRuntime(258): at android.widget.TextView.onTouchEvent(TextView.java:6541)
10-31 14:40:58.311: ERROR/AndroidRuntime(258): at android.view.View.dispatchTouchEvent(View.java:3709)
10-31 14:40:58.311: ERROR/AndroidRuntime(258): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
10-31 14:40:58.311: ERROR/AndroidRuntime(258): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
10-31 14:40:58.311: ERROR/AndroidRuntime(258): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
10-31 14:40:58.311: ERROR/AndroidRuntime(258): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
10-31 14:40:58.311: ERROR/AndroidRuntime(258): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
10-31 14:40:58.311: ERROR/AndroidRuntime(258): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
10-31 14:40:58.311: ERROR/AndroidRuntime(258): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1659)
10-31 14:40:58.311: ERROR/AndroidRuntime(258): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107)
10-31 14:40:58.311: ERROR/AndroidRuntime(258): at android.app.Activity.dispatchTouchEvent(Activity.java:2061)
10-31 14:40:58.311: ERROR/AndroidRuntime(258): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1643)
10-31 14:40:58.311: ERROR/AndroidRuntime(258): at android.view.ViewRoot.handleMessage(ViewRoot.java:1691)
10-31 14:40:58.311: ERROR/AndroidRuntime(258): at android.os.Handler.dispatchMessage(Handler.java:99)
10-31 14:40:58.311: ERROR/AndroidRuntime(258): at android.os.Looper.loop(Looper.java:123)
10-31 14:40:58.311: ERROR/AndroidRuntime(258): at android.app.ActivityThread.main(ActivityThread.java:4363)
10-31 14:40:58.311: ERROR/AndroidRuntime(258): at java.lang.reflect.Method.invokeNative(Native Method)
10-31 14:40:58.311: ERROR/AndroidRuntime(258): at java.lang.reflect.Method.invoke(Method.java:521)
10-31 14:40:58.311: ERROR/AndroidRuntime(258): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
10-31 14:40:58.311: ERROR/AndroidRuntime(258): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
10-31 14:40:58.311: ERROR/AndroidRuntime(258): at dalvik.system.NativeStart.main(Native Method)
10-31 14:40:58.322: INFO/Process(52): Sending signal. PID: 258 SIG: 3
10-31 14:40:58.322: INFO/dalvikvm(258): threadid=7: reacting to signal 3
10-31 14:40:58.322: ERROR/dalvikvm(258): Unable to open stack trace file '/data/anr/traces.txt': Permission denied
10-31 14:41:00.324: INFO/Process(258): Sending signal. PID: 258 SIG: 9
10-31 14:41:00.342: INFO/ActivityManager(52): Process com.AndroidTest1 (pid 258) has died.
10-31 14:41:00.361: INFO/WindowManager(52): WIN DEATH: Window{44d6c020 com.AndroidTest1/com.AndroidTest1.AndroidTest1Activity paused=false}
10-31 14:41:00.361: INFO/WindowManager(52): WIN DEATH: Window{44d7c880 com.AndroidTest1/com.AndroidTest1.actAdmin paused=false}
10-31 14:41:00.361: INFO/ActivityManager(52): Start proc com.AndroidTest1 for activity com.AndroidTest1/.AndroidTest1Activity: pid=264 uid=10028 gids={}
10-31 14:41:00.521: ERROR/gralloc(52): [unregister] handle 0x3f0f20 still locked (state=40000001)
10-31 14:41:00.621: DEBUG/ddm-heap(264): Got feature list request
10-31 14:41:00.652: INFO/UsageStats(52): Unexpected resume of com.AndroidTest1 while already resumed in com.AndroidTest1
10-31 14:41:00.781: WARN/InputManagerService(52): Got RemoteException sending setActive(false) notification to pid 258 uid 10028
10-31 14:41:01.102: INFO/ActivityManager(52): Displayed activity com.AndroidTest1/.AndroidTest1Activity: 21436 ms (total 750 ms)

Antworten
Johannes
  • Forum-Beiträge: 49

31.10.2011, 15:43:56 via Website

ich kann da irgendwie nicht so viel rauslesen :(

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

31.10.2011, 16:09:59 via Website

dein layout ist nicht valid

10-31 14:40:58.311: ERROR/AndroidRuntime(258): java.lang.RuntimeException: Binary XML file line #15: You must supply a layout_width attribute.

in zeile 15 hast du kein layout_width attribut. ohne das geht nix

swordiApps Blog - Website

Antworten
Johannes
  • Forum-Beiträge: 49

31.10.2011, 19:07:16 via Website

oh was für ein dummer fehler, den muss ich wohl noch kurz bevor ich das hier gepostet hab, gemacht haben, hier der richtige fehler:

10-31 18:03:30.461: WARN/WindowManager(52): Attempted to add window with non-application token WindowToken{44d68f38 token=null}. Aborting.
10-31 18:03:30.471: DEBUG/AndroidRuntime(319): Shutting down VM
10-31 18:03:30.471: WARN/dalvikvm(319): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
10-31 18:03:30.471: ERROR/AndroidRuntime(319): Uncaught handler: thread main exiting due to uncaught exception
10-31 18:03:30.481: ERROR/AndroidRuntime(319): android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
10-31 18:03:30.481: ERROR/AndroidRuntime(319): at android.view.ViewRoot.setView(ViewRoot.java:472)
10-31 18:03:30.481: ERROR/AndroidRuntime(319): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
10-31 18:03:30.481: ERROR/AndroidRuntime(319): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
10-31 18:03:30.481: ERROR/AndroidRuntime(319): at android.app.Dialog.show(Dialog.java:239)
10-31 18:03:30.481: ERROR/AndroidRuntime(319): at android.app.Activity.showDialog(Activity.java:2488)
10-31 18:03:30.481: ERROR/AndroidRuntime(319): at com.AndroidTest1.actAdmin.onClick(actAdmin.java:80)
10-31 18:03:30.481: ERROR/AndroidRuntime(319): at android.view.View.performClick(View.java:2364)
10-31 18:03:30.481: ERROR/AndroidRuntime(319): at android.view.View.onTouchEvent(View.java:4179)
10-31 18:03:30.481: ERROR/AndroidRuntime(319): at android.widget.TextView.onTouchEvent(TextView.java:6541)
10-31 18:03:30.481: ERROR/AndroidRuntime(319): at android.view.View.dispatchTouchEvent(View.java:3709)
10-31 18:03:30.481: ERROR/AndroidRuntime(319): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
10-31 18:03:30.481: ERROR/AndroidRuntime(319): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
10-31 18:03:30.481: ERROR/AndroidRuntime(319): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
10-31 18:03:30.481: ERROR/AndroidRuntime(319): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
10-31 18:03:30.481: ERROR/AndroidRuntime(319): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
10-31 18:03:30.481: ERROR/AndroidRuntime(319): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
10-31 18:03:30.481: ERROR/AndroidRuntime(319): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1659)
10-31 18:03:30.481: ERROR/AndroidRuntime(319): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107)
10-31 18:03:30.481: ERROR/AndroidRuntime(319): at android.app.Activity.dispatchTouchEvent(Activity.java:2061)
10-31 18:03:30.481: ERROR/AndroidRuntime(319): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1643)
10-31 18:03:30.481: ERROR/AndroidRuntime(319): at android.view.ViewRoot.handleMessage(ViewRoot.java:1691)
10-31 18:03:30.481: ERROR/AndroidRuntime(319): at android.os.Handler.dispatchMessage(Handler.java:99)
10-31 18:03:30.481: ERROR/AndroidRuntime(319): at android.os.Looper.loop(Looper.java:123)
10-31 18:03:30.481: ERROR/AndroidRuntime(319): at android.app.ActivityThread.main(ActivityThread.java:4363)
10-31 18:03:30.481: ERROR/AndroidRuntime(319): at java.lang.reflect.Method.invokeNative(Native Method)
10-31 18:03:30.481: ERROR/AndroidRuntime(319): at java.lang.reflect.Method.invoke(Method.java:521)
10-31 18:03:30.481: ERROR/AndroidRuntime(319): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
10-31 18:03:30.481: ERROR/AndroidRuntime(319): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
10-31 18:03:30.481: ERROR/AndroidRuntime(319): at dalvik.system.NativeStart.main(Native Method)
10-31 18:03:30.491: INFO/Process(52): Sending signal. PID: 319 SIG: 3
10-31 18:03:30.501: INFO/dalvikvm(319): threadid=7: reacting to signal 3
10-31 18:03:30.501: ERROR/dalvikvm(319): Unable to open stack trace file '/data/anr/traces.txt': Permission denied
10-31 18:03:32.780: INFO/Process(319): Sending signal. PID: 319 SIG: 9
10-31 18:03:32.790: INFO/WindowManager(52): WIN DEATH: Window{44e48058 com.AndroidTest1/com.AndroidTest1.AndroidTest1Activity paused=false}
10-31 18:03:32.790: INFO/ActivityManager(52): Process com.AndroidTest1 (pid 319) has died.
10-31 18:03:32.800: INFO/WindowManager(52): WIN DEATH: Window{44dbe330 com.AndroidTest1/com.AndroidTest1.actAdmin paused=false}
10-31 18:03:32.830: INFO/ActivityManager(52): Start proc com.AndroidTest1 for activity com.AndroidTest1/.AndroidTest1Activity: pid=326 uid=10028 gids={}
10-31 18:03:33.050: ERROR/gralloc(52): [unregister] handle 0x4f01f8 still locked (state=40000001)
10-31 18:03:33.090: DEBUG/ddm-heap(326): Got feature list request
10-31 18:03:33.171: INFO/UsageStats(52): Unexpected resume of com.AndroidTest1 while already resumed in com.AndroidTest1
10-31 18:03:33.370: WARN/InputManagerService(52): Got RemoteException sending setActive(false) notification to pid 319 uid 10028
10-31 18:03:33.460: INFO/ActivityManager(52): Displayed activity com.AndroidTest1/.AndroidTest1Activity: 658 ms (total 658 ms)


heißt das dass er einen null-dialog öffnen wollte? aber ich hab doch diese id mit übergeben (sie code oben)
oh man... kann doch nicht so schwer sein nen einfachen dialog zu öffnen :(

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

31.10.2011, 19:11:31 via Website

tausch mal getApplicationContext() durch MeineAcitivty.this aus

glaub du hast nen falschen Context.

und btw: ich vermute, es macht keine Probleme, aber dem dialog die ID 0 geben ist sicher nicht vorteilhaft.

swordiApps Blog - Website

Antworten
Johannes
  • Forum-Beiträge: 49

01.11.2011, 21:19:20 via Website

ahhh, das war die Lösung!!! vielen vielen Dank!!! mit diesem context hab ich irgendwie eh so meine probleme... ich weiß nie so recht was ich da nehmen soll... ich probier da einfach immer irgendwelche sachen aus bis es geht....

Antworten