2009-12-22 9 views

Respuesta

11

Simplemente capture la excepción deseada, luego cree un nuevo AlertDialog que contenga el contenido de la excepción.

import android.app.Activity; 
import android.app.AlertDialog; 
import android.os.Bundle; 

public class HelloException extends Activity { 
    public class MyException extends Exception { 
     private static final long serialVersionUID = 467370249776948948L; 
     MyException(String message) { 
      super(message); 
     } 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 
     try { 
      doSomething(); 
     } catch (MyException e) { 
      AlertDialog.Builder dialog = new AlertDialog.Builder(this); 
      dialog.setTitle("MyException Occured"); 
      dialog.setMessage(e.getMessage()); 
      dialog.setNeutralButton("Cool", null); 
      dialog.create().show(); 
     } 
    } 

    private void doSomething() throws MyException { 
     throw new MyException("Hello world."); 
    } 
} 
+0

Gracias, esto resolvió mi problema. – dgraziotin

3

Sólo por dejar que los demás usuarios sepan: Si usted tiene una excepción personalizada separados que desea utilizar en todas partes (modelos, controladores, etc.), y también en sus puntos de vista, propagar la excepción personalizada en todas partes y añadir un código AlertDialog de Trevor en un método definido en su excepción, pasándole el contexto:

package it.unibz.pomodroid.exceptions; 

import android.app.AlertDialog; 
import android.content.Context; 

public class PomodroidException extends Exception{ 
    /** 
    * 
    */ 
    private static final long serialVersionUID = 1L; 

    // Default constructor 
    // initializes custom exception variable to none 
    public PomodroidException() { 
     // call superclass constructor 
     super();    
    } 

    // Custom Exception Constructor 
    public PomodroidException(String message) { 
     // Call super class constructor 
     super(message); 
    } 


    public void alertUser(Context context){ 
     AlertDialog.Builder dialog = new AlertDialog.Builder(context); 
     dialog.setTitle("WARNING"); 
     dialog.setMessage(this.toString()); 
     dialog.setNeutralButton("Ok", null); 
     dialog.create().show(); 
    } 

} 

en mi fragmento, el método es alertUser (contexto contexto). Para mostrar la alerta en una actividad, basta con utilizar:

try { 
    // ... 
} catch (PomodroidException e) { 
    e.alertUser(this); 
} 

Es muy fácil de sobrecargar el método de personalizar algunas partes del AlertDialog como su título y el texto del botón.

Espero que esto ayude a alguien.

Cuestiones relacionadas