Costum AlertDialog

  • Antworten:7
  • Bentwortet
Kullorki
  • Forum-Beiträge: 55

29.01.2011, 11:12:56 via Website

Hi, ich habe schon ein wenig rumprobiert, aber irgendwie will es nicht so wie ich es will ^^...
Undzwar versuche ich mir einen eigenen AlertDialog mit 2 Textfeldern zu basteln, allerdings komme ich einfach nicht drauf welches layout ich bei der ViewGroup einfügen muss, ich bekomme nämlich immer einen ForceClose wenn sich der Dialog öffnen soll.
"
Fatal Exception: Main
android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application at android.view.ViewRoot.setView(ViewRoot.java:531)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
at android.app.Dialog.show(Dialog.java:241)
...."
kann mir bitte jemand weiterhelfen?
Java Code:
1AlertDialog.Builder builder;
2 AlertDialog alertDialog ;
3
4 Context mContext = getApplicationContext();
5 LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(LAYOUT_INFLATER_SERVICE);
6 View layout = inflater.inflate(R.layout.passwortdialog,
7 (ViewGroup) findViewById( ///?????///));
8
9 final TextView Benutzername = (TextView) layout.findViewById(R.id.Benutzername);
10 Benutzername.setText("");
11 final TextView Passwort = (TextView) layout.findViewById(R.id.Password);
12 Passwort.setText("");
13
14 builder = new AlertDialog.Builder(mContext);
15 builder.setView(layout);
16 builder.setCancelable(true);
17 builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
18 public void onClick(DialogInterface dialog, int id) {
19
20 //....//
21 }
22 });
23 alertDialog = builder.create();
24 alertDialog.show();

— geändert am 02.02.2011, 10:23:32

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

29.01.2011, 15:09:25 via Website

Hallo,

probiers doch mit null. Den Rest übernimmt der Builder.

Gruß,
Thorsten

Antworten
Kullorki
  • Forum-Beiträge: 55

29.01.2011, 19:28:41 via Website

das hilft leider nicht, immer noch ein ForceClose... hier mal der ganze
101-29 18:26:17.570: ERROR/AndroidRuntime(452): FATAL EXCEPTION: main
201-29 18:26:17.570: ERROR/AndroidRuntime(452): android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
301-29 18:26:17.570: ERROR/AndroidRuntime(452): at android.view.ViewRoot.setView(ViewRoot.java:531)
401-29 18:26:17.570: ERROR/AndroidRuntime(452): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
501-29 18:26:17.570: ERROR/AndroidRuntime(452): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
601-29 18:26:17.570: ERROR/AndroidRuntime(452): at android.app.Dialog.show(Dialog.java:241)
701-29 18:26:17.570: ERROR/AndroidRuntime(452): at de.Kullorki.Vertretung.Settings.PasswortDialog(Settings.java:209)
801-29 18:26:17.570: ERROR/AndroidRuntime(452): at de.Kullorki.Vertretung.Settings.onOptionsItemSelected(Settings.java:172)
901-29 18:26:17.570: ERROR/AndroidRuntime(452): at android.app.Activity.onMenuItemSelected(Activity.java:2205)
1001-29 18:26:17.570: ERROR/AndroidRuntime(452): at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:748)
1101-29 18:26:17.570: ERROR/AndroidRuntime(452): at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:143)
1201-29 18:26:17.570: ERROR/AndroidRuntime(452): at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:855)
1301-29 18:26:17.570: ERROR/AndroidRuntime(452): at com.android.internal.view.menu.IconMenuView.invokeItem(IconMenuView.java:532)
1401-29 18:26:17.570: ERROR/AndroidRuntime(452): at com.android.internal.view.menu.IconMenuItemView.performClick(IconMenuItemView.java:122)
1501-29 18:26:17.570: ERROR/AndroidRuntime(452): at android.view.View$PerformClick.run(View.java:9080)
1601-29 18:26:17.570: ERROR/AndroidRuntime(452): at android.os.Handler.handleCallback(Handler.java:587)
1701-29 18:26:17.570: ERROR/AndroidRuntime(452): at android.os.Handler.dispatchMessage(Handler.java:92)
1801-29 18:26:17.570: ERROR/AndroidRuntime(452): at android.os.Looper.loop(Looper.java:123)
1901-29 18:26:17.570: ERROR/AndroidRuntime(452): at android.app.ActivityThread.main(ActivityThread.java:3647)
2001-29 18:26:17.570: ERROR/AndroidRuntime(452): at java.lang.reflect.Method.invokeNative(Native Method)
2101-29 18:26:17.570: ERROR/AndroidRuntime(452): at java.lang.reflect.Method.invoke(Method.java:507)
2201-29 18:26:17.570: ERROR/AndroidRuntime(452): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
2301-29 18:26:17.570: ERROR/AndroidRuntime(452): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
2401-29 18:26:17.570: ERROR/AndroidRuntime(452): at dalvik.system.NativeStart.main(Native Method)
2501-29 18:26:17.601: WARN/ActivityManager(61): Force finishing activity

— geändert am 02.02.2011, 10:23:51

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

29.01.2011, 20:15:34 via Website

Benutze für mContext statt dem getApplicationContext() den Context der Activity. Dann gehts.

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

29.01.2011, 20:17:25 via Website

Ist der View der dir geliefert wird null mittels findViewById oder wie soll ich das verstehen ?

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
Kullorki
  • Forum-Beiträge: 55

29.01.2011, 21:08:18 via Website

Thorsten Krämer
Benutze für mContext statt dem getApplicationContext() den Context der Activity. Dann gehts.
hab ich dich richtig verstanden?

1Context mContext = getBaseContext();
so funktioniert es immer noch nicht :/

Mac Systems
Ist der View der dir geliefert wird null mittels findViewById oder wie soll ich das verstehen ?
bei view group muss doch das layout der gerade laufenden acitivity rein oder? also hier bei mir R.layout.settings
allerdings verstehe ich nicht wieso das null sein sollte, weil das layout ist ja nicht null oder?

— geändert am 02.02.2011, 10:24:09

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

29.01.2011, 21:37:18 via Website

Ich habe das vorhin bei einer eigenen App ausprobiert und mit new AlertDialog.builder(getApplicationContext()) bekomme ich die gleiche Exception.
Wenn ich aber getApplicationContext() gegen this austausche wobei sich this sich auf die Activity bezieht, von der aus ich den Dialog erzeuge, dann funktioniert alles wunderbar.

Antworten
Kullorki
  • Forum-Beiträge: 55

30.01.2011, 13:19:02 via Website

Danke , :) das Funktioniert !

— geändert am 30.01.2011, 13:19:53

Antworten