2011-10-12 80 views
0

這是一個新手問題。我想創建一個公共方法,可以通過應用程序中的任何活動訪問。我試圖創建的方法是顯示versionName或VersionCode的簡單方法。這裏是我在私有方法中使用的代碼,我只是覺得必須有一種簡單的方法讓我的所有活動都可以訪問此方法,而無需將私有方法代碼分別添加到每個活動中,只需添加一個公共描述符似乎不起作用... 謝謝!如何創建公共方法?

方法:

private PackageInfo getPackageInfo() { 
     PackageInfo pi = null; 
     try { 
      pi = this.getPackageManager().getPackageInfo(this.getPackageName(), PackageManager.GET_ACTIVITIES); 
     } catch (PackageManager.NameNotFoundException e) { 
      e.printStackTrace(); 
     } 
     return pi; 
    } 

用法示例:

@Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     PackageInfo versionInfo = getPackageInfo(); 
     String about = new String(
        versionInfo.versionName +"\n" + getString(R.string.about)); 

回答

1

定義一個新的類與靜態方法:

public class PackageInfoHandler{ 
    public static PackageInfo getPackageInfo(Context ctx){ 
    try{ 
    return ctx.getPackageManager().getPackageInfo(this.getPackageName(), PackageManager.GET_ACTIVITIES); 
    } catch (PackageManager.NameNotFoundException e) 
     e.printStackTrace(); 
    } 
} 

用它在你的活動這樣

PackageInfo versionInfo = PackageInfoHandler.getPackageInfo(this); 

作爲另外你可能會返回來自PackageInfoHandler的字符串,並嘗試給它一個比我更好的名字;-)

或者你可以創建一個你的方法實現的超類,並從中擴展你所有的活動。

0

2簡單的選擇:

  1. 使抽象的活動這種方法公開,讓您的活動中的每一個繼承這個類。
  2. 使其成爲公共靜態並添加上下文參數,將其放入實用程序類中。
0

如果訪問它的方法在同一個類中,那麼你不需要改變任何東西。但是如果其他類的方法可以訪問這個方法。只要改變私人公共

public PackageInfo getPackageInfo() { 
    PackageInfo pi = null; 
    try { 
     pi = this.getPackageManager().getPackageInfo(this.getPackageName(), PackageManager.GET_ACTIVITIES); 
    } catch (PackageManager.NameNotFoundException e) { 
     e.printStackTrace(); 
    } 
    return pi; 
} 
+0

確實的方法,需要在創建第一個活動,或者如果活動宣告方法尚未創建它不要緊? – benbeel

0

添加「公共」的方法

public PackageInfo getPackageInfo() { 
    PackageInfo pi = null; 
    try { 
     pi = this.getPackageManager().getPackageInfo(this.getPackageName(), 
    PackageManager.GET_ACTIVITIES); 
    } catch (PackageManager.NameNotFoundException e) { 
     e.printStackTrace(); 
    } 
    return pi; 
}