2009-12-22 6 views

risposta

11

Basta catturare l'eccezione desiderata, quindi creare una nuova AlertDialog contenente il contenuto dell'eccezione.

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

Grazie, questo ha risolto il mio problema. – dgraziotin

3

Proprio per lasciare altri utenti sanno: Se hai un'eccezione personalizzato separato che si desidera utilizzare ovunque (modelli, controller, ecc), e anche nel vostro punto di vista, propagare l'eccezione personalizzata ovunque e aggiungere il codice AlertDialog Trevor in un metodo definito nella vostra eccezione, passandogli il contesto:

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

} 

a mio frammento, il metodo è alertUser (context contesto). Per visualizzare l'avviso in un'attività, utilizzare semplicemente:

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

è molto facile sovraccaricare il metodo per personalizzare alcune parti del AlertDialog come il suo titolo e il testo del pulsante.

Spero che questo aiuti qualcuno.

Problemi correlati