我想创建一个全局的shortToast和longToast方法,以便在我拥有的所有其他活动中动态使用它,因此我不必在每个活动中定义Toast方法。
我试过这个,但Android Studio告诉我这是内存泄漏:
public static Activity thisActivity = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
thisActivity = this;
}
public static void shortToast()
{
Toast.makeText(thisActivity, "message" , Toast.LENGTH_SHORT).show();
}
public static void longToast()
{
Toast.makeText(thisActivity, "message" , Toast.LENGTH_LONG).show();
}
我可以做些什么来实现具有全局Toast方法(没有内存泄漏)的目标?
答案 0 :(得分:3)
创建一个Utils类:
public class Utils {
public static void showToast(String msg, Context ctx) {
Toast.makeText(ctx, msg, Toast.LENGTH_SHORT).show();
}
}
在Activity中使用它:
Utils.showToast("Message", this);
来自片段:
Utils.showToast("Message", getActivity());
答案 1 :(得分:2)
将Activity
作为参数传递给shortToast()
和longToast()
。
或者,将这些方法放在Activity
的子类中,并让所有活动都继承自它。然后,您可以从方法和static
字段中删除thisActivity
关键字,只需使用this
。