0

私の Android アプリケーションでは、カスタム Activity クラスからキャッチされなかったすべての例外を管理する必要があります。ここで問題が発生しました。内部からアクティビティを開始できません。アクティビティが開始されていなくても例外はありません。

public class MyActivity extends Activity {
    Context context;
    Throwable throwable;
    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        context=getApplicationContext();
        final AlertDialog.Builder builder= new AlertDialog.Builder(this);

        Thread.currentThread().setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {

            @Override
            public void uncaughtException(Thread thread, Throwable ex) {
                throwable=ex;
                new Thread(){
                    @Override
                    public void run() {
                        Looper.prepare();

                        builder.setTitle("Warning...!");
                        builder.create();
                        builder.setNegativeButton("Close", new DialogInterface.OnClickListener() {

                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                finish();

                            }
                        });
                        builder.setPositiveButton("More Details", new DialogInterface.OnClickListener() {

                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                Intent intent= new Intent(MyActivity.this,Report.class);
                                intent.putExtra("error", throwable);
                                startActivity(intent);

                            }
                        });
                        builder.setMessage(throwable.getMessage());
                        builder.show();
                        Looper.loop();
                    }
                }.start();  
            }
        });
    }
}
4

3 に答える 3

0

この行を変更する必要があります

startActivity(intent);

context.startActivity(intent);
于 2012-07-10T04:20:23.297 に答える
0

Activity検索したところ、 from を開始できないようですUncaughtExceptionHandler。あなたができる最大のことは、Toastメッセージを表示することです。

Toast.makeText(app, "Some message", Toast.LENGTH_SHORT).show();
于 2014-09-12T12:48:55.127 に答える
-1

このコードは私とうまくいっています。

注:2 seconds私が定義したキャッチされていない例外コードの後で、新しいアクティビティをロードするのに時間がかかります。

以下のコードをアクティビティの onCreate メソッドに入れるだけです

Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler(){

        @Override
        public void uncaughtException(Thread thread, Throwable ex) {
        AlarmManager mgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
        mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 2000, intent);
        System.exit(2); 
        startActivity(new Intent(CurrentActivity.this,TargetActivity.class));
    }
    });

これに関して何か問題があれば教えてください!!

于 2012-07-09T06:48:57.650 に答える