2017-10-14 23 views
-1

我正在關注如何將活動中經常使用的函數放在一個地方的教程。如何成功地在全局聲明變量,問題與上下文

例如,在我的項目中出現的一條toast消息,而不是在每個活動中都具有該功能,只需在一個位置調用GlobalFunctions.java即可。

所以,我用簡單的功能得到它,例如,在GlobalFunctions.java

public class GlobalFunctions { 

    public void simpleMessage() { 
     System.out.println("simpleMessage text goes here"); 
    } 

} 

而且我這樣稱呼它從Activity1

GlobalFunctions simplemessage = new GlobalFunctions(); 
simplemessage.simpleMessage(); 

但怎麼樣? :

public class GlobalFunctions { 

    public void simpleMessage() { 
     Toast.makeText(getApplicationContext(), "simpleMessage text goes here", Toast.LENGTH_LONG).show(); 
    } 
} 

我已經看了幾個職位,包括getApplicationContext() error Android並不管我擺在ToastContext部分,我得到了Cannot resolve method消息。如果在這個問題上有任何有關傻瓜的好教程,我會很感激。

回答

1

的關鍵是static

靜態值允許您在整個項目中使用靜態methodsvariables ..等等。

您可以使用下面的概念:

public static class GlobalFunctions { 

public static void simpleMessage(Context context, String message) { 
    Toast.makeText(context, message, Toast.LENGTH_LONG).show(); 
} 

}

而且你必須調用它喜歡:

GlobalFunctions.simpleMessage(/*YourActivity.this*/ /*or*/ /*getActivity()*/, "toast"); 
1

一種解決方案是通過Context作爲ActivityFragment的參數。

而不是實例化GlobalFunctions,寫入和使用靜態方法可能是一個更好的方法。

1

創建一個Java類utils的:

public class Utils { 

     public static void showToast(Context context, String text) { 
       Toast.makeText(context, text, Toast.LENGTH_LONG).show(); 
     } 

    } 

    // for example on the Activity code 

     Utils.showToast(this, "This is the toast text"); 
1

嘗試此創建班級像這樣通過ContextToast消息這樣的參數

public class GlobalFunctions {  

    public static void simpleMessage(Context context,String message) { 
     Toast.makeText(Context, message, Toast.LENGTH_LONG).show(); 
    } 
} 

調用這個函數就像在現場活動之外這

GlobalFunctions.simpleMessage(YourActivity.this,"your Mesaage"); 
+0

'GlobalFunctions.simpleMessage(YourActivity.this,「你Mesaage」)響應;'不會工作,因爲這不是靜態類也方法,你必須從變量中提取它。 – Ibrahim

+0

@Ibrahim我只是更新我的答案 –

+0

我寧願保留你原來的答案,因爲它提出了不同的概念,對整個問題更有用,現在你編輯它,就像在問題中的所有答案一樣,使用相同的概念和方式,所以它是之前變得毫無用處。 – Ibrahim

1

飼養環境可以是內存泄漏的原因,但有一些解決方法。

您可以使用應用程序或應用程序上下文創建Singleton,並在您的自定義應用程序類的onCreate中初始化它。但是你必須記住,你不能使用這個上下文來構建視圖 - 它不是風格化的。

其他方式只是傳遞上下文作爲參數。

對不起,缺碼,從手機:)