Ich versuche, einen AlertDialog zu erstellen, indem Sie den Builder verwenden und eine benutzerdefinierte Ansicht festlegen. Wenn ich versuche, den Blick ins Innere von onCreateDialog aufzublasen, erhalte ich eine Stackoverflow ..StackOverflowError beim Versuch, ein benutzerdefiniertes Layout für einen AlertDialog in einem DialogFragment zu inflationieren
Hier den Code bis zu dem Punkt, wo es zu onCreateDialog Schleife zurück:
@Override
public Dialog onCreateDialog(Bundle savedInstanceState){
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(R.string.enter_time);
LinearLayout outerLayout = (LinearLayout) getLayoutInflater(savedInstanceState)
.inflate(R.layout.time_entry_dialog, null);
...
}
Und hier ist die LogCat Ausgang:
02-28 22:30:04.220: E/AndroidRuntime(4250): FATAL EXCEPTION: main
02-28 22:30:04.220: E/AndroidRuntime(4250): java.lang.StackOverflowError
02-28 22:30:04.220: E/AndroidRuntime(4250): at android.app.Activity.getSystemService(Activity.java:4009)
02-28 22:30:04.220: E/AndroidRuntime(4250): at android.view.LayoutInflater.from(LayoutInflater.java:210)
02-28 22:30:04.220: E/AndroidRuntime(4250): at android.view.ContextThemeWrapper.getSystemService(ContextThemeWrapper.java:75)
02-28 22:30:04.220: E/AndroidRuntime(4250): at com.android.internal.app.AlertController$AlertParams.<init>(AlertController.java:812)
02-28 22:30:04.220: E/AndroidRuntime(4250): at android.app.AlertDialog$Builder.<init>(AlertDialog.java:374)
02-28 22:30:04.220: E/AndroidRuntime(4250): at android.app.AlertDialog$Builder.<init>(AlertDialog.java:359)
02-28 22:30:04.220: E/AndroidRuntime(4250): at com.sweatyreptile.chee.runtimetracker.TimeEntryDialogFragment.onCreateDialog(TimeEntryDialogFragment.java:18)
02-28 22:30:04.220: E/AndroidRuntime(4250): at android.support.v4.app.DialogFragment.getLayoutInflater(DialogFragment.java:295)
02-28 22:30:04.220: E/AndroidRuntime(4250): at com.sweatyreptile.chee.runtimetracker.TimeEntryDialogFragment.onCreateDialog(TimeEntryDialogFragment.java:21)
02-28 22:30:04.220: E/AndroidRuntime(4250): at android.support.v4.app.DialogFragment.getLayoutInflater(DialogFragment.java:295)
02-28 22:30:04.220: E/AndroidRuntime(4250): at com.sweatyreptile.chee.runtimetracker.TimeEntryDialogFragment.onCreateDialog(TimeEntryDialogFragment.java:21)
02-28 22:30:04.220: E/AndroidRuntime(4250): at android.support.v4.app.DialogFragment.getLayoutInflater(DialogFragment.java:295)
...etc
EDIT: fand ich diese Zeile in der Quelle DialogFragment.getLayoutInflater():
mDialog = onCreateDialog(savedInstanceState);
Also .. wenn ich einen LayoutInflator innerhalb von onCreateDialog nicht ohne unendliche Rekursion bekommen kann, wie kann ich eine Ansicht für einen benutzerdefinierten AlertDialog aufblasen?
Was haben Sie im 'time_entry_dialog'? Haben Sie auch keine Angst, den Stacktrace mit Ausnahme zu posten. – Luksprog
Bitte fügen Sie Ihre Logcat-Ausgabe hinzu –
Ich habe die LogCat-Ausgabe hinzugefügt. @Luksprog, 'time_entry_dialog' ist nur ein LinearLayout mit zentrierter Schwerkraft –