Después de cambiar la orientación de la pantalla, el diálogo aparece aparentemente sin ninguna llamada

Aquí hay parte de la Actividad donde cambia la orientación de la pantalla:

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et = (EditText) findViewById(R.id.editText1); et.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { Fragment1 dialogFragment = new Fragment1(); dialogFragment.show(getFragmentManager(), null); dialogFragment.setTextDialog(et.getText().toString()); return true; } }); } 

Al parecer, parece que el cuadro de diálogo que aparecerá dentro del DialogFragment debería aparecer justo después del onLongClick sobre el editText (sé que cuando el cambio de orientación de la pantalla de la actividad se reinicia, pero no debería empezar normalmente como la primera vez que se crea? )

Mi problema: cuando abro al menos una vez el cuadro de diálogo y lo cierro, después de cambiar la orientación de la pantalla tengo el cuadro de diálogo se muestra de nuevo en la pantalla, como si hace mucho tiempo-Clicked el editText.

No sé por qué sucede esto.

Adjunto también la estructura del fragmento de diálogo:

 public Dialog onCreateDialog(Bundle savedInstanceState) { final Dialog dialog = super.onCreateDialog(savedInstanceState); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); LayoutInflater adbInflater = LayoutInflater.from(getActivity()); View eulaLayout = adbInflater.inflate(R.layout.dialog_crypt, null); Button btn_OK = (Button) eulaLayout.findViewById(R.id.btnOK); dialog.setContentView(eulaLayout); final EditText et = (EditText)eulaLayout.findViewById(R.id.editText2); et.setText(textDialog); if(et.length()>0) { et.setText(et.getText().toString() + " "); } et.setSelection(et.length()); btn_OK.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { textDialog = et.getText().toString(); ((Main)getActivity()).setTextOnEditText(textDialog); dialog.dismiss(); } }); return dialog; } 

Muchísimas gracias por la ayuda.

    3 Solutions collect form web for “Después de cambiar la orientación de la pantalla, el diálogo aparece aparentemente sin ninguna llamada”

    Intente eliminar el diálogo de la pila utilizando el gestor de fragmentos en lugar de simplemente descartarlo.

    getFragmentManager().beginTransaction().remove(dialogFragment.this).commit();

    Por cierto, en lugar de simplemente usar un Fragment para su diálogo, debe utilizar DialogFragment sí. Realizar Pedido: DialogFragment

    Además, no llame a sus métodos de actividad como este ( ((Main)getActivity()).setTextOnEditText(textDialog); menos que su fragmento es una clase interna estática. En su lugar, crear una interface para hablar entre los fragmentos y la actividad.

    Cuando la pantalla cambia de orientación, llama al método onSaveInstanceState y guarda el estado en el objeto Bundle incluyendo la pila. Si descarta el diálogo sin borrar esta pila, mostrará el diálogo cuando gire el teléfono, ya que se encuentra en el paquete saveInstanceState.

    Debe borrar el diálogo de la pila con:

     getActivity().getSupportFragmentManager().beginTransaction().remove(this).commit(); 

    Si utiliza la biblioteca de soporte para el fragmento de diálogo, o

     getActivity().getFragmentManager().beginTransaction().remove(this).commit(); 

    Cuando se produce un cambio de configuración (como la rotación), el fragmento antiguo no se destruye, sino que simplemente se añade a la actividad cuando se vuelve a crear (android retiene fragmentos de forma predeterminada). Así que si tienes tu DialogFragment mostrado antes de la rotación, aparecerá al instante después de la rotación.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.