Android 下有没有办法在警报中显示自定义异常?

发布于 2024-08-15 13:12:28 字数 72 浏览 8 评论 0原文

我是一名 Android 开发新手。 我想知道是否有一种方法可以监听 Android 中的自定义异常并使用警报显示其文本。谢谢。

I'm a newbie Android developer.
I would like to know if there exists a way to listen for a custom exception in Android and display its text using an alert. Thank you.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

缘字诀 2024-08-22 13:12:28

只需捕获所需的异常,然后创建一个包含异常内容的新 AlertDialog。

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.");
    }
}

Just catch the desired exception, then create a new AlertDialog containing the contents of the exception.

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.");
    }
}
贩梦商人 2024-08-22 13:12:28

只是为了让其他用户知道:
如果您希望在任何地方(模型、控制器等)以及您的视图中使用一个单独的自定义异常,请将自定义异常传播到所有地方,并在异常中定义的方法中添加 Trevor 的 AlertDialog 代码,并将其传递给context:

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

}

在我的代码片段中,该方法是alertUser(Context context)。要在活动中显示警报,只需使用:

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

很容易重载该方法来自定义 AlertDialog 的某些部分,例如其标题和按钮的文本。

希望这对某人有帮助。

Just for letting other users know:
If you've got a separated custom exception that you wish to use everywhere (models, controllers etc.), and also in your views, propagate the custom exception everywhere and add Trevor's AlertDialog code in a method defined in your exception, passing it the context:

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

}

In my snippet, the method is alertUser(Context context). To display the Alert in an Activity, simply use:

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

It's very easy to overload the method to customize some parts of the AlertDialog like its title and the text of the button.

Hope this helps someone.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文