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));
4

4 回答 4

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;
}
于 2011-10-12T16:43:52.553 回答
0

2个简单的选项:

  1. 使这个方法在一个抽象的 Activity 中公开,并使你的每一个 Activity 都继承这个类。
  2. 将其设为公共静态并添加上下文参数,将其放入实用程序类中。
于 2011-10-12T15:51:57.250 回答
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;
}
于 2011-10-12T15:52:18.057 回答
0

使用静态方法定义一个新类:

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 返回字符串并尝试给它一个比我更好的名称;-)

或者您可以创建一个超类来实现您的方法并从中扩展您的所有活动。

于 2011-10-12T16:00:01.193 回答