2017-03-21 55 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

相關問題