2011-10-12 3 views
0

이것은 초보자 유형 질문입니다. 응용 프로그램의 모든 활동에서 액세스 할 수있는 public 메서드를 만들고 싶습니다. 내가 만들려고하는 방법은 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

에 민간 변경 문자열을 PackageInfoHandler에서 가져 와서 내가 그랬던 것보다 더 나은 이름을주고 싶습니다. ;-)

메소드가 구현되는 위치의 수퍼 클래스를 만들고 그로부터 모든 액티비티를 확장하십시오.

0

2 간단한 옵션이 상속

  1. 메이크업이 방법의 추상적 인 활동에서 공공 및이 활동의 ​​모든 일을 수업.
  2. public static으로 만들고 context 매개 변수를 추가하고 유틸리티 클래스에 넣습니다.
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); 

처럼 활동에서 사용 : 그냥 정적 방법으로 새로운 클래스를 정의 공공

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; 
} 
관련 문제