2012-07-22 48 views
9

在我的android項目中,我有很多活動,其中一些已經擴展了其他的東西,比如地圖活動或BroadcastReceiver。android - 如何創建一個可重用的函數?

如何創建一個可以從任何活動調用的函數,因爲我不想在多個活動中重複任何代碼。

感謝。

回答

12

如果我有執行,我想從幾個活動調用實用小任務有用的功能,我創建了一個名爲的Util類,並在那裏停放他們。我讓他們static,以便我不需要分配任何對象。

下面是其中一類,我寫了一部分的例子:

public final class Util { 
    public final static int KIBI = 1024; 
    public final static int BYTE = 1; 
    public final static int KIBIBYTE = KIBI * BYTE; 

    /** 
    * Private constructor to prevent instantiation 
    */ 
    private Util() {} 

    public static String getTimeStampNow() { 
     Time time = new Time(); 
     time.setToNow(); 
     return time.format3339(false); 
    } 
} 

要使用這些常量和方法,我可以從類名來訪問它們,而不是任何對象:

int fileSize = 10 * Util.KIBIBYTE; 
String timestamp = Util.getTimeStampNow(); 

除了這個,還有更多的課程,但你明白了。

3

您可以擴展Application類,然後在您的活動中調用getApplication方法並將其轉換爲您的應用程序類以調用該方法。

您可以通過創建一個擴展android.app.Application一個類來完成此:

package your.package.name.here; 

import android.app.Application; 

public class MyApplication extends Application { 

    public void doSomething(){ 
     //Do something here 
    } 
} 

在你的清單,你必須再找到標籤,並添加了android:NAME =「MyApplication的」屬性。

在您的活動類,你可以然後通過執行調用該函數:

((MyApplication)getApplication()).doSomething(); 

有做類似的事情的其他方式,但這是途徑之一。該文檔甚至指出,在大多數情況下,靜態單例是更好的選擇。應用程序文檔位於:http://developer.android.com/reference/android/app/Application.html

+0

你能告訴我一個這樣的例子,我不知道這是如何完成的 – omega 2012-07-22 19:54:04

+0

我把上面的代碼放在一個新的.java文件中嗎? 和「android:name =」MyApplication「」,我如何將它添加到清單中? – omega 2012-07-22 20:17:05

+1

如果您使用Eclipse,我使用「添加類」菜單點來創建應用程序類。 對於清單,打開清單文件並找到如下所示的行:並添加name屬性,使其變成類似於 Dimse 2012-07-22 20:28:18

0

您可以創建一個靜態方法或包含此方法的對象。

0

您可以創建一個擴展Activity的類,然後確保您的真實活動是該活動的子類,而不是通常的內置活動。只需在此父活動中定義您的通用代碼即可。

Shachar

相關問題