2017-03-21 26 views
1

我想要创建一个全局shortToast和longToast方法,以便在所有其他活动中动态使用它,所以我不必在每个活动中定义Toast方法。创建一个全局Toast方法来跨所有活动使用它?

我已经试过这,但Android的工作室告诉我,这是一个内存泄漏:

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(); 
} 

我能做些什么,而不是获得具有全球敬酒方法(没有内存泄漏)这一目标呢?

回答

1

创建utils的类:

public class Utils { 

    public static void showToast(String msg, Context ctx) { 
     Toast.makeText(ctx, msg, Toast.LENGTH_SHORT).show(); 
    } 
} 

使用它从活动:

Utils.showToast("Message", this); 

从片段:

Utils.showToast("Message", getActivity()); 
2

Activity作为参数传递给shortToast()longToast()

或者,将这些方法放在Activity的子类中,并让所有活动都从它继承。然后,您可以从方法和thisActivity字段中删除关键字static,并简单地使用this

相关问题