Ich habe ein Problem mit meinem DialogFragment. Um meine Ansicht zu erstellen, verwende ich die Methode, die auf dem Android-Blog beschrieben wird. Hier ist meine DialogFragmentDialogFragment und zwingen, Tastatur zu zeigen
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View myLayout = inflater.inflate(R.layout.dialog_connect, null);
edit = (EditText) myLayout.findViewById(R.id.password_edit);
edit.requestFocus();
getDialog().getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE);
return myLayout;
}
Wenn ich onCreateView() verwenden, es funktioniert, aber ich würde eine AlterDialog gerne schaffen und dies zu tun, ich habe den folgenden Code:
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
// Inflate and set the layout for the dialog
// Pass null as the parent view because its going in the dialog layout
builder
.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
callback.onYesConnectClick(edit.getText().toString());
}
})
.setNegativeButton(R.string.refuse, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
callback.onNoConnectClick();
}
});
return builder.create();
}
Wenn ich kommentieren die Code von onCreateView(), funktioniert die App, aber ich kann nicht erzwingen, dass die Tastatur angezeigt wird, und wenn ich onCreateView() auskommentieren, bekomme ich einen Absturz. Hier ist der Stack-Trace:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.test/com.test.ProfileActivity_}: android.util.AndroidRuntimeException: requestFeature() must be called before adding content
AndroidRuntime at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2312)
AndroidRuntime at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2362)
AndroidRuntime at android.app.ActivityThread.access$600(ActivityThread.java:156)
AndroidRuntime at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1250)
AndroidRuntime at android.os.Handler.dispatchMessage(Handler.java:99)
AndroidRuntime at android.os.Looper.loop(Looper.java:137)
AndroidRuntime at android.app.ActivityThread.main(ActivityThread.java:5229)
AndroidRuntime at java.lang.reflect.Method.invokeNative(Native Method)
AndroidRuntime at java.lang.reflect.Method.invoke(Method.java:525)
AndroidRuntime at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:799)
AndroidRuntime at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:566)
AndroidRuntime at dalvik.system.NativeStart.main(Native Method)
AndroidRuntime Caused by: android.util.AndroidRuntimeException: requestFeature() must be called before adding content
Also meine Frage ==> Kann ich das Alertdialog verwenden und die Tastatur zeigen, wenn das Dialogfeld angezeigt wird?
wtf?! Ich habe so viel Zeit gesucht und die Lösung war so einfach! Aber eins verstehe ich nicht. Ich habe versucht, Android: windowSoftInputMode = "stateVisible" im Manifest über die Aktivität, die verantwortlich für den Start des Dialogs verantwortlich ist und es funktioniert nicht ... – mrroboaat
Vielen Dank !! Es gibt ungefähr ein Dutzend andere "Lösungen" für dieses Problem auf StackOverflow und keiner von ihnen funktioniert für mich ... aber dieser tut es. – josh2112
Dies scheint die funktionierendste Lösung unter allen, die ich finden kann. Ich bin neugierig, warum dies in onActivityCreated statt onResume() aufgerufen werden muss? Ich liebe wirklich einige Erklärungen zu hören. – Sean