2012-05-04 61 views
0

我不知道我做了正確的事情。我懷疑的主要原因是,在這個或其他論壇中,我找不到做過類似事情的人。Android項目本地手動創建庫

我在我的項目中創建了一個抽象的java類。命名爲lib。我在那裏放置了項目中所有其他類使用的幾種結構和方法。

它爲我工作,但我想知道是否有一個更可接受的方法來收集所有常見的方法和結構。

注意:當然所有的方法都聲明爲公共靜態。

Note II:我不知道如何獲取抽象類中的上下文,所以如果需要的話,我必須將它作爲參數傳遞給方法。

+0

我很困惑,你想在這裏做什麼?在通用庫中集中可重用代碼? – yorkw

+0

是的,就是這樣。我不需要所有項目的通用庫,只需一個項目的常見庫。 – ilomambo

+0

我認爲你需要更清楚地定義這個庫的用途。沒有一種重複使用代碼的策略,其中有數百種。實用工具類可以提供幫助,使用設計模式和良好的編碼原則將有所幫助你的問題太籠統了,不能給出一個好的答案。 –

回答

0

好吧,感謝@Matt Wolfe的評論,我開始知道我所做的就是所謂的「工具類」,它被廣泛用於在項目中共享通用代碼。 一般的模板是:

public abstract class lib { 

    public static final int ZERO = 0; 
    public static final int ONE = 1; 
    public static final int TWO = 2; 

    public static void func1(int i) { 
    } 

    public static void func2(int i, String s) { 
    } 

} 

,你可以這樣使用它與任何其他代碼:

...; 
lib.func1(lib.ZERO); 
lib func2(lib.TWO, "sandwich"); 
...; 

知道,讓我相信,我所做的就是確定。

這將是完美的找到一種方法來避免前綴lib。並且只需要ECLIPSE和編譯器就可以找到正確的導入,並用它的名稱來識別函數,就像他們爲全局庫一樣。

+0

我認爲您錯過了抽象類的要點。抽象意味着類應該(但不一定)包含抽象方法。它的工作原理是抽象類將某些方法聲明爲抽象方法,並且通常會聲明和定義其他方法。有一個「多態性」的概念,可以在這裏使用,你可以從該類中調用抽象方法。還要記住類名應該以大寫字母開頭。另外我會建議通過它們執行的一些通用功能對實用程序類進行分組。 –

+0

還回到抽象類..你永遠不能直接創建它們的實例,你必須提供一個具體的實現並實例化它。真的沒有理由讓實用類是抽象的(我可以想到),因爲實用類只是一個真正具有一堆函數的「僞」類...你根本沒有實例化它們,你只是調用函數。 –

+0

對於抽象類的用戶來說,您可能是對的,我的意思是說不會被實例化。我應該讓這些方法最終完成。 lib這個名字並不構成它編譯好的問題,我也沒有任何錯誤也沒有警告過它。 – ilomambo

0

這是你正在尋找的掃管笏?

public abstract class AbstractActivity extends Activity{ 

    public static synchronized boolean showAlertBox(Context ctx,final String title,final String message,final String okBtnTxt,final OnClickListener clickListener){ 

    AlertDialog.Builder alertbox; alertbox = new AlertDialog.Builder(ctx); 
    this.runOnUiThread(new Runnable() { 

     @Override 
     public void run() { 


     alertbox.setTitle(title); 
     alertbox.setMessage(message); 
     if(okBtnTxt!=null || clickListener!=null) 
      alertbox.setNeutralButton(okBtnTxt,clickListener); 
     alertbox.show(); 
      ..... 

    } 
    }); 

    return true; 
    } 
} 

在擴展這個抽象類的類中,您可以通過使用showAlertBox(this)來調用它; 其他明智的用法AbstractActivity.showAlertBox(Context);

+0

不,不,不。你誤解我了。我不問如何調用AlertDialog。 Alert()只是我放到我的lib中的一個例子。我問的是我實現這個本地庫的事實,它工作正常,但以前似乎沒有人使用過這種技術。由於我不想重新發明輪子,我想知道全球方法通常如何處理。 – ilomambo

+0

我編輯了原始問題並刪除了Alert()示例,以防止誤解 – ilomambo