Android catch exception non gérée et afficher la boîte de dialogue

Je veux gérer une exception non gérée dans mon application, sans les bibliothèques de tiers.

Donc j'écris un code.

Activité :

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Thread.setDefaultUncaughtExceptionHandler(new ReportHelper(this));
    throw new NullPointerException();
}

Mon accident gestionnaire :

import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.os.MessageQueue;
import android.widget.Toast;
/**
* Created by S-Shustikov on 08.06.14.
*/
public class ReportHelper implements Thread.UncaughtExceptionHandler {
private final AlertDialog dialog;
private       Context     context;
public ReportHelper(Context context) {
this.context = context;
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setMessage("Application was stopped...")
.setPositiveButton("Report to developer about this problem.", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
}
})
.setNegativeButton("Exit", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
//Not worked!
dialog.dismiss();
System.exit(0);
android.os.Process.killProcess(android.os.Process.myPid());
}
});
dialog = builder.create();
}
@Override
public void uncaughtException(Thread thread, Throwable ex) {
showToastInThread("OOPS!");
}
public void showToastInThread(final String str){
new Thread() {
@Override
public void run() {
Looper.prepare();
Toast.makeText(context, "OOPS! Application crashed", Toast.LENGTH_SHORT).show();
if(!dialog.isShowing())
dialog.show();
Looper.loop();
}
}.start();
}
}

Quand je commence application comme vous le voyez je m'avaient envoyé NullPointerException. Toast dans ma logique de gestion a été montré, et de dialogue a été montré trop. MAIS! Dialogue clics n'était pas de la manipulation correcte. Je veux dire de la logique dans onClick méthode n'a pas été travaillé. Quel est le problème et comment je peux résoudre ce problème?

Définir ce que n'est pas correct? Ce qui s'est passé et ce qui a été le comportement à adopter dans votre onClick comportement?
Qu'attendez-vous et que faites-vous voir ? c'est à dire pourquoi vous dites "il n'est pas le travail"?
j'attends que la boîte de dialogue se ferme et l'application sera terminé, appuyez sur la bouton "Exit".
comportement attendu je descript en réponse précédente à ben75. Dialogue a juste montré, mais les clics ne sont pas manipulés.
Aussi j'ai ce problème. Avez-vous trouvé la solution?

OriginalL'auteur Sergey Shustikov | 2014-06-08