Dialogs

  • Antworten:7
Stefan S.
  • Forum-Beiträge: 109

24.08.2010, 19:05:58 via Website

Hi,
ich wollte mir einen custom Dialog bauen der mir aber immer um die Ohren fliegt (Exception) wenn ich zB ein rating view mit rein nehme ins Layout.
Mit Text oder Bildern haut das ganze hin. Ich habe eine Liste mit Elementen und wenn ich eines klicke soll ein Options Dialog aufgehen und ein Rating abfragen über die rating view.
Meine erste Frage ist also erst mal ob das prinzipiell mit einem Dialog überhaupt geht?

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

24.08.2010, 20:22:01 via Website

Das geht ... wenn du Code/Exceptions postes könnte man genauer antworten.

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

Antworten
Stefan S.
  • Forum-Beiträge: 109

24.08.2010, 21:21:41 via Website

Alles klar, los gehts.

Hier baue ich den Dialog:
1@Override
2 protected Dialog onCreateDialog(int id) {
3 switch(id) {
4 case DIALOG_BET_ID:
5 dialog = new Dialog(TipperTest.this);
6 //dialog = new Dialog(getApplicationContext());
7 dialog.setContentView(R.layout.tip_dialog);
8 dialog.setTitle("Ergebnis");
9 dialog.setCancelable(true);
10 break;
11
12 default:
13 dialog = null;
14 }
15 return dialog;
16 }
Was mir da schon nicht passt sieht man am auskommentieren, welches auch eine Exception verursacht obwohl die Methode in meiner MainActivity aufgerufen wird..

Hier meine XML Datei für das Layout:
1<?xml version="1.0" encoding="utf-8"?>
2<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:orientation="vertical"
4 android:layout_width="fill_parent"
5 android:layout_height="fill_parent"
6 >
7<RatingBar android:id="@+id/RatingBar01"
8 android:layout_width="wrap_content"
9 android:layout_height="wrap_content"></RatingBar>
10<RatingBar android:id="@+id/RatingBar02"
11 android:layout_width="wrap_content"
12 android:layout_height="wrap_content"></RatingBar>
13</LinearLayout>

Aufruf:
1showDialog(DIALOG_BET_ID);

Exception:
108-24 19:12:25.090: ERROR/AndroidRuntime(402): FATAL EXCEPTION: main
208-24 19:12:25.090: ERROR/AndroidRuntime(402): java.lang.NullPointerException
308-24 19:12:25.090: ERROR/AndroidRuntime(402): at eu.schloer.tippertest.TipperTest.onCreateDialog(TipperTest.java:317)
408-24 19:12:25.090: ERROR/AndroidRuntime(402): at android.app.Activity.onCreateDialog(Activity.java:2472)
508-24 19:12:25.090: ERROR/AndroidRuntime(402): at android.app.Activity.createDialog(Activity.java:881)
608-24 19:12:25.090: ERROR/AndroidRuntime(402): at android.app.Activity.showDialog(Activity.java:2547)
708-24 19:12:25.090: ERROR/AndroidRuntime(402): at android.app.Activity.showDialog(Activity.java:2514)
808-24 19:12:25.090: ERROR/AndroidRuntime(402): at eu.schloer.tippertest.TipperTest.onOptionsItemSelected(TipperTest.java:295)
908-24 19:12:25.090: ERROR/AndroidRuntime(402): at android.app.Activity.onMenuItemSelected(Activity.java:2195)
1008-24 19:12:25.090: ERROR/AndroidRuntime(402): at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:730)
1108-24 19:12:25.090: ERROR/AndroidRuntime(402): at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:143)
1208-24 19:12:25.090: ERROR/AndroidRuntime(402): at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:855)
1308-24 19:12:25.090: ERROR/AndroidRuntime(402): at com.android.internal.view.menu.IconMenuView.invokeItem(IconMenuView.java:532)
1408-24 19:12:25.090: ERROR/AndroidRuntime(402): at com.android.internal.view.menu.IconMenuItemView.performClick(IconMenuItemView.java:122)
1508-24 19:12:25.090: ERROR/AndroidRuntime(402): at android.view.View$PerformClick.run(View.java:8816)
1608-24 19:12:25.090: ERROR/AndroidRuntime(402): at android.os.Handler.handleCallback(Handler.java:587)
1708-24 19:12:25.090: ERROR/AndroidRuntime(402): at android.os.Handler.dispatchMessage(Handler.java:92)
1808-24 19:12:25.090: ERROR/AndroidRuntime(402): at android.os.Looper.loop(Looper.java:123)
1908-24 19:12:25.090: ERROR/AndroidRuntime(402): at android.app.ActivityThread.main(ActivityThread.java:4627)
2008-24 19:12:25.090: ERROR/AndroidRuntime(402): at java.lang.reflect.Method.invokeNative(Native Method)
2108-24 19:12:25.090: ERROR/AndroidRuntime(402): at java.lang.reflect.Method.invoke(Method.java:521)
2208-24 19:12:25.090: ERROR/AndroidRuntime(402): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
2308-24 19:12:25.090: ERROR/AndroidRuntime(402): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
2408-24 19:12:25.090: ERROR/AndroidRuntime(402): at dalvik.system.NativeStart.main(Native Method)
2508-24 19:12:25.180: WARN/ActivityManager(60): Force finishing activity eu.schloer.tippertest/.TipperTest


Mit diesem Layout klappt das ganze:
1<?xml version="1.0" encoding="utf-8"?>
2<LinearLayout
3 xmlns:android="http://schemas.android.com/apk/res/android"
4 android:layout_width="wrap_content"
5 android:layout_height="wrap_content">
6<TextView android:text="@+id/TextView02"
7 android:id="@+id/TextView02"
8 android:layout_width="wrap_content"
9 android:layout_height="wrap_content"></TextView>
10</LinearLayout>

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

25.08.2010, 11:13:16 via Website

Und was ist Zeile 317 ?

108-24 19:12:25.090: ERROR/AndroidRuntime(402): FATAL EXCEPTION: main
208-24 19:12:25.090: ERROR/AndroidRuntime(402): java.lang.NullPointerException
308-24 19:12:25.090: ERROR/AndroidRuntime(402): at eu.schloer.tippertest.TipperTest.onCreateDialog(TipperTest.java:317)

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

Antworten
Stefan S.
  • Forum-Beiträge: 109

25.08.2010, 13:10:08 via Website

Wow, ich kann nicht sagen was ich gemacht habe außer Eclipse neu zu starten aber es geht jetzt!
Die Frage warum das auskommentierte hier allerdings nicht klappt bleibt bestehen:
1dialog = new Dialog(TipperTest.this);
2//dialog = new Dialog(getApplicationContext());

TipperTest ist die main Activity. Dr Codeschnipsel befindet sich in der
1@Override
2 protected Dialog onCreateDialog(int id)
Methode.

Antworten
Dominic Bartl
  • Forum-Beiträge: 180

25.08.2010, 21:09:09 via Website

mach mal statt getApplicationContext()
this oder Tippertest.this

ok tut mir leid hab übersehn das es auskommentiert ist sorry

— geändert am 25.08.2010, 21:10:58

Antworten
Dominic Bartl
  • Forum-Beiträge: 180

25.08.2010, 21:13:20 via Website

wenn ich einen custom dialog mach dann mach ich eine neue klasse die von Dialog ableitet.

wenn ich ubuntu boote kann ichs dir schicken. Funktioniert immer obwohl ich sagen muss das ich die RatingBar noch nicht verwendet habe!

Antworten
Stefan S.
  • Forum-Beiträge: 109

25.08.2010, 23:53:53 via Website

Danke, brauchst du erst mal nicht ich habe das Notepad Tutorial auf der developer Seite entdeckt und da wird das Thema abgedeckt. Habe schon gemerkt dass ich im moment noch ziemlich viel Blödsinn mache und hoffe die Adapter bald komplett zu verstehen.

Antworten