【问题标题】:How to create public method?如何创建公共方法?
【发布时间】:2011-12-06 06:26:45
【问题描述】:

这是一个新手类型的问题。我想创建一个可以被应用程序中的任何活动访问的公共方法。我尝试创建的方法是显示 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));

【问题讨论】:

    标签: android methods public-method


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

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

    【讨论】:

      【解决方案2】:

      2 个简单的选项:

      1. 在抽象 Activity 中公开此方法,并使您的每个 Activity 都继承该类。
      2. 将其设为公共静态并添加上下文参数,将其放入实用程序类中。

      【讨论】:

        【解决方案3】:

        如果访问它的方法在同一个类中,那么您不需要更改任何内容。但是如果其他类的方法可以访问这个方法。只需将私有更改为公共

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

        【讨论】:

        • 方法是否需要在创建的第一个活动中,或者声明该方法的活动是否已经创建无关紧要?
        【解决方案4】:

        在方法中添加“public”

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-08-17
          • 2014-10-06
          • 1970-01-01
          • 2011-05-28
          • 1970-01-01
          • 2015-11-06
          • 2011-04-19
          • 2019-01-27
          相关资源
          最近更新 更多