2011-10-12 3 views
0

Ceci est une question de type débutant. Je veux créer une méthode publique accessible par n'importe quelle activité de l'application. La méthode que j'essaye de créer est une méthode simple pour montrer le versionName ou le VersionCode. voici le code que j'utilise dans une méthode privée, j'ai juste l'impression qu'il doit y avoir un moyen simple de rendre cette méthode accessible à toutes mes activités sans avoir à ajouter le code de méthode privée à chaque activité individuellement, et simplement ajouter un public le descripteur ne semble pas fonctionner ... Merci!Comment créer une méthode publique?

méthode:

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

Exemple d'utilisation:

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

Répondre

1

Définir une nouvelle classe avec une méthode statique:

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(); 
    } 
} 

utiliser dans votre activité comme celui-ci

PackageInfo versionInfo = PackageInfoHandler.getPackageInfo(this); 

En outre, vous pouvez retourner le chaîne de PackageInfoHandler et essayer de lui donner un meilleur nom que j'ai fait ;-)

Ou vous pourriez faire une superclasse de l'endroit où votre méthode est implémentée et étendre toutes vos activités à partir de celle-ci.

0

2 options simples:

  1. rendent cette méthode publique dans un résumé d'activité et font chacun de vos activités hériter de cette classe.
  2. rendre public statique et ajouter un paramètre de contexte, le mettre dans une classe utilitaire.
0

Si les méthodes qui y accèdent appartiennent à la même classe, vous n'avez rien à modifier. Mais si les méthodes d'autres classes peuvent accéder à cette méthode. Il suffit de changer le privé au 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; 
} 
+0

la méthode ne doivent être en première activité créée, ou faut-il pas d'importance si l'activité déclarant la méthode n'a encore été créé? – benbeel

0

ajouter « public » à la méthode

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