gpt4 book ai didi

android - 我只需要覆盖 Toast 类的 show()

转载 作者:行者123 更新时间:2023-11-30 04:22:59 25 4
gpt4 key购买 nike

我只需要覆盖 Toast 类的 show() 方法。我创建了一个扩展 Toast 类的类,但随后我创建了一个 toast 消息,我得到一个异常,setView(View view) 没有被调用。但我不想为该方法创建自定义 View 而是使用默认的。

那么,如何在不为 setView(View view) 创建自定义 View 的情况下覆盖唯一的 show() 方法方法?

这是我的做法:

 MyOwnToast m = new MyOwnToast(getApplicationContext());
m.makeText(getApplicationContext(), "Bla bla bla", Toast.LENGTH_LONG);
m.show();

我的自定义 toast 在这里:

public class MyOwnToast extends Toast {
public MyOwnToast(Context context) {
super(context);
}

@Override
public void show() {
super.show();
Log.i("Dev", "
}

dev site 上也有说明:

Note: Do not use the public constructor for a Toast unless you are going to define the layout with setView(View). If you do not have a custom layout to use, you must use makeText(Context, int, int) to create the Toast.

那么我如何覆盖 show() 方法?

最佳答案

您是否在您的覆盖中调用了 super.show()?很可能 Toast.show() 正在调用它,而您的覆盖现在正在调用它,因此调用不会发生。

你可能需要做的是这样的事情:

public class MyOwnToast extends Toast {
public MyOwnToast(Toast toast) {
//Code to initialize your toast from the argument toast

//Probably something like this:
this.setView(toast.getView());
this.setDuration(toast.getDuration());
//etc. for other get/set pairs in Toast
}

public static MyMakeText(Context context, CharSequence text, int duration) {
return new MyOwnToast(Toast.makeText(context, text, duration));
}

public void show() {
//Your show override code, including super.show()
}
}

然后,当你想使用它时,做:

MyOwnToast.MyMakeText(activity, "Some text", Toast.LENGTH_LONG).show();

填写时请参阅 Toast 文档作为引用:http://developer.android.com/reference/android/widget/Toast.html

关于android - 我只需要覆盖 Toast 类的 show(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8991298/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com