【问题标题】:Android - Custom Toast ClassAndroid - 自定义 Toast 类
【发布时间】:2020-02-10 19:41:29
【问题描述】:

我正在尝试创建一个类,每当该类的对象被激活时,它都应该显示祝酒词。 我想这样做,这样我就不会在每个活动中重复相同的 toast 代码。

public class Toast extends android.widget.Toast {
    String toast_text;
    Context toast_context;

    public Toast(String toast_text, Context toast_context) {
        this.toast_text = toast_text;
        this.toast_context = toast_context;

        Toast toast = android.widget.Toast.makeText(this.toast_context.this, this.toast_text, Toast.LENGTH_LONG);
        ViewGroup view = (ViewGroup) toast.getView();
        view.setBackgroundResource(R.drawable.background_global);

        TextView messageTextView = (TextView) view.getChildAt(0);
        messageTextView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
        messageTextView.setTextSize(35);

        Typeface face_font = Typeface.createFromAsset(getAssets(), "res/font/aldrich.ttf");
        messageTextView.setTypeface(face_font);
        messageTextView.setTextColor(Color.CYAN);

        toast.show();
    }
}

这些是以下错误:

关于构造函数: "“android.widget.toast”中没有可用的默认构造函数; 关于第一个错误: " ')' expected"; 关于第二个错误:“无法解析方法“getAssets””。

【问题讨论】:

  • 您能否发布实际的错误消息,而不仅仅是它们发生的位置?
  • 是的,我可以。我已经编辑了这个问题。谢谢你的时间????

标签: java android toast android-toast


【解决方案1】:

使用您通过构造函数收到的toast_context 创建toast 并访问asset

Toast toast = android.widget.Toast.makeText(toast_context, toast_text, Toast.LENGTH_LONG);

Typeface face_font = Typeface.createFromAsset(toast_context.getAssets(), "res/font/aldrich.ttf");

除此之外,您应该使用 Toast 以外的其他名称来创建自定义 toast

class MyToast extends android.widget.Toast {

    public MyToast(String toast_text, Context toast_context) {
        super(toast_context);

        ...

    }
}

【讨论】:

  • 当我试图解决这个问题时,我决定更改类的名称,以免发生冲突。在此之后,我得到的唯一错误是 getAssets 函数,您的答案解决了它!非常感谢您的时间和帮助! ?
猜你喜欢
  • 2011-03-19
  • 2015-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-27
  • 2021-12-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多