style life custom create activity android android-dialogfragment

android - life - dialogfragment style



DialogFragment y fuerza para mostrar el teclado (4)

La respuesta de tyczj no funciona para mí.

La solución fue, dentro de CreateDialog

Dialog d = builder.create(); d.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); return d;

Al final, el código sería así

@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(); } }); Dialog d = builder.create(); d.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); return d; }

Tengo un problema con mi DialogFragment. Entonces, para crear mi vista, utilizo el método descrito en el blog de Android. Aquí está mi DialogFragment

@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; }

Si uso onCreateView (), funciona, pero me gustaría crear un AlterDialog y para hacer esto, tengo el siguiente código:

@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(); }

Si comento el código de onCreateView (), la aplicación funciona, pero no puedo forzar que se muestre el teclado y si elimino el comentario de onCreateView (), aparece un bloqueo. Aquí está el rastro de la pila:

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

Entonces mi pregunta ==> ¿Puedo usar AlertDialog y mostrar el teclado cuando aparece el diálogo?


Tenga cuidado con la llamada setLayout() si la usa. Me tomó un tiempo darme cuenta de que puede anular los atributos de tu ventana. Después de envolverlo en un controlador, la solución aceptada funcionó para mí.

@Override public Dialog onCreateDialog(Bundle savedInstanceState) { final Dialog dialog = super.onCreateDialog(savedInstanceState); dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); return dialog; } @Override public void onStart() { super.onStart(); // without a handler, the window sizes itself correctly // but the keyboard does not show up new Handler().post(new Runnable() { @Override public void run() { getDialog().getWindow().setLayout(DIALOG_WIDTH, DIALOG_HEIGHT); } }); }


Utilice "SOFT_INPUT_STATE_ALWAYS_VISIBLE" lugar de "SOFT_INPUT_STATE_VISIBLE" en el método onCreateDialog onActivityCreated o onCreateDialog método de onCreateDialog onActivityCreated onCreateDialog .


anula onActivityCreated en su fragmento de diálogo y coloca getDialog().getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE); ahí