Android 如何在Toast from处理程序中显示自定义错误消息?

Android 如何在Toast from处理程序中显示自定义错误消息?,android,dialog,handler,toast,Android,Dialog,Handler,Toast,我已经创建了一个自定义处理程序,它负责关闭对话框、显示对话框和显示(自定义)错误消息。但是,我仍然坚持使用自定义错误消息部分。如何使用自定义消息发布消息&如何在handleMessage中解析它 现在我在做: handler.sendMessage(Message.get(handler,handler\u Message\u ERROR)) 我读过关于bundle的文章,但没有成功。最好(为了保持代码整洁),我想这样做: final Message msg = new Message(); f

我已经创建了一个自定义处理程序,它负责关闭对话框、显示对话框和显示(自定义)错误消息。但是,我仍然坚持使用自定义错误消息部分。如何使用自定义消息发布消息&如何在handleMessage中解析它

现在我在做:

handler.sendMessage(Message.get(handler,handler\u Message\u ERROR))

我读过关于bundle的文章,但没有成功。最好(为了保持代码整洁),我想这样做:

final Message msg = new Message();
final Bundle data = new Bundle();
data.putString(ERROR, "error message");
msg.setData(data);
handler.sendMessage(Message.get(handler,handler\u Message\u ERROR,“自定义错误消息”)

对于错误对话框:

handler.sendMessage(Message.get(handler,handler\u Message\u对话框,“自定义标题”,“自定义错误消息”)

下面是我现在正在使用的处理程序代码:

public class MyHandler extends Handler {
    private Activity mContext;

    public MyHandler(Activity activity) {
        mContext = activity;
    }

    @Override
    public void handleMessage(Message msg) {
        switch (msg.what) {
        case MyActivity.HANDLER_MESSAGE_ERROR:
            try {
                Toast.makeText(mContext, "_This should be a custom error message", Toast.LENGTH_SHORT).show();
            } catch (Exception e) {

            }
            break;
        }
    }
}

Message对象可以像这样存储键值对:

final Message msg = new Message();
final Bundle data = new Bundle();
data.putString(ERROR, "error message");
msg.setData(data);
在处理程序中,从包中提取数据:

final String e = m.getData().getString(ERROR);

我使用handler传递不同的消息。此代码将适用于您

仅传递简单消息:

Message msg = new Message();
msg.what = HANDLER_MESSAGE_ERROR;
Bundle b = new Bundle();
b.putString("message", "Custom error message");
msg.setData(b);
handler.sendMessage(msg);
传递标题和消息:

Message msg = new Message();
msg.what = HANDLER_MESSAGE_DIALOG;
Bundle b = new Bundle();
b.putString("title", "Custom title");
b.putString("message", "Custom error message");
msg.setData(b);
handler.sendMessage(msg);
您将通过以下方式在方法中获取捆绑包

@Override
public void handleMessage(Message msg) {
    //Get bundle
    Bundle b = msg.getData();
    String title,messag;
    switch (msg.what) {
    case MyActivity.HANDLER_MESSAGE_ERROR:
        try {
             message = b.getString("message");
             //show toast here
        } catch (Exception e) {

        }
        break;
    case MyActivity.HANDLER_MESSAGE_DIALOG:
        try {
             title = b.getString("title");
             message = b.getString("message");
             //show toast here
        } catch (Exception e) {

        }
        break;
    }
}