创建一个全局Toast方法以在所有活动中使用它?

时间:2017-03-21 17:01:49

标签: android memory-leaks android-toast

我想创建一个全局的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方法(没有内存泄漏)的目标?

2 个答案:

答案 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

相关问题