2012-05-07 38 views
8

yo estaba tratando de hacer una DialogFragment que podría ser despedido cuando se le golpea, después de algún búsqueda decidí ir con esta aplicación:Descartar DialogFragment onClick

public class ErrorDialogFragment extends RoboDialogFragment { 

private static final String MESSAGE_ARG = "message"; 
private TextView text; 

public ErrorDialogFragment newInstance (String message){ 
    ErrorDialogFragment f = new ErrorDialogFragment(); 

     Bundle args = new Bundle(); 
     args.putString(MESSAGE_ARG, message); 
     f.setArguments(args); 

     return f; 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {  
    View v = inflater.inflate(R.layout.error_dialog_fragment, container, false); 
    v.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      ErrorDialogFragment.this.dismiss(); 
     } 
    }); 

    text = (TextView) v.findViewById(R.id.error_dialog_text_textView); 
    text.setText(getArguments().getString(MESSAGE_ARG)); 
    return v; 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setStyle(DialogFragment.STYLE_NO_TITLE, 0); 
} 

El diálogo de alerta puede tener un mensaje personalizado y será despedido cuando se toca.

¿Crees que es una mejor manera de lograr esto?

Gracias.

Respuesta

14

Puede usar dialog.setCanceledOnTouchOutside (true); que cerrará el diálogo si toca fuera del cuadro de diálogo. o

Pruebe este tutorial http://iserveandroid.blogspot.com/2010/11/how-to-dismiss-custom-dialog-based-on.html. Espero que ayude .. !!

+0

Gracias @Raghav estoy usando el setCanceledOnTouchOutside, pero para el toque interno voy a continuar con mi enfoque, el enlace se refiere a un actividad ni un DialogFragment :) – Goofyahead

+0

¿Puede decirme cómo llama al método setCanceledOnTouchOutside? porque necesito el objeto de diálogo para ese – Sandra

+0

solo escríbalo donde está realizando todas las demás operaciones para el diálogo. – Rookie

2
final AlertDialog alertDialog = new AlertDialog.Builder(this).create(); 
     alertDialog.setTitle(title); 
     alertDialog.setMessage(msg); 
     alertDialog.setButton("OK", new DialogInterface.OnClickListener() 
     { 
      public void onClick(DialogInterface dialog, int which) 
      { 
       alertDialog.dismiss(); 
      } 
     }); 
     alertDialog.setIcon(R.drawable.error_icon); 
     alertDialog.show(); 

simplemente use este código siempre que quiera mostrar la alerta, y está bien el evento onclick el cuadro de diálogo se cerrará.

+0

Gracias @ user1208720, pero mi clase extiende desde DialogFragment (intencionalmente no un AlertDialog), y no es cerrado cuando se hace clic en un botón en lugar cuando se hace clic en cualquier lugar de la vista . La pregunta es sobre el uso de esta clase DialogFragment desde android framework y cómo enviar correctamente eventos como este :) – Goofyahead

0

Llamo a DialogFragment de una actividad. Después de hacer clic en un botón en el cuadro de diálogo, estoy usando una interfaz para llamar a un método dentro de la actividad. En esa actividad que estoy ejecutando esto:

// This is the code inside the activity that call the dialog 
Fragment fragment = getSupportFragmentManager().findFragmentByTag("MyDialog"); 
if(fragment != null) { 
    DialogFragment dialog = (DialogFragment) fragment; 
    dialog.dismiss(); 
} 
Cuestiones relacionadas