这是一个新手型问题。我想创建一个可以被应用程序中的任何活动访问的公共方法。我尝试创建的方法是一个显示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));
答案 0 :(得分: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返回字符串并尝试给它一个比我更好的名字; - )
或者你可以创建一个超类来实现你的方法,并从中扩展你的所有活动。
答案 1 :(得分:0)
2个简单选项:
答案 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;
}
答案 3 :(得分:0)
将“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;
}