创建自定义的Toast

创建自定义的Toast

我想创建自定义的Toast视图,例如

public class SMSToast extends Activity {

    public void showToast(Context context, String message) {
        LayoutInflater inflater = getLayoutInflater();
        View layout = inflater.inflate(R.layout.toast_sms, (ViewGroup)findViewById(R.id.toast_sms_root));

        TextView text = (TextView) layout.findViewById(R.id.toast_sms_text);
        text.setText(message);

        Toast toast = new Toast(context);
        toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
        toast.setDuration(Toast.LENGTH_LONG);
        toast.setView(layout);
        toast.show();
    }
}


并在BroadcastReceiver中使用onReceive方法

SMSToast toast = new SMSToast();
                        toast.showToast(context,
                                        "Received SMS from: " + msg_from +
                                        " Content: " + msgBody);


但调用代码时未显示任何消息。如果我使用Toast,则会显示文本。我做错了什么?

最佳答案

 public class SMSToast{

    public void showToast(Context context, String message) {
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
       View layout = inflater.inflate(R.layout.toast_sms, null);
       TextView text = (TextView) layout.findViewById(R.id.toast_sms_text);
       text.setText(message);
       Toast toast = new Toast(context);
       toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
       toast.setDuration(Toast.LENGTH_LONG);
       toast.setView(layout);
       toast.show();
   }
}


不要从Activity扩展SMSToast类。使它成为一个简单的Java类。

SMSToast toast = new SMSToast();
toast.showToast(context,  "Received SMS from: " + msg_from +
" Content: " + msgBody);

10-08 16:39