Java 尝试调用虚拟方法';android.content.pm.PackageManager android.content.Context.getPackageManager()';关于空对象引用
这是我遇到的错误,尽管我从未使用过Java 尝试调用虚拟方法';android.content.pm.PackageManager android.content.Context.getPackageManager()';关于空对象引用,java,android,nullpointerexception,Java,Android,Nullpointerexception,这是我遇到的错误,尽管我从未使用过getPackageManager()方法 以下是我的代码: AppUtils.java: Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.pm.PackageManager android.content.Context.getPackageManager()' on a null object reference pub
getPackageManager()
方法
以下是我的代码:
AppUtils.java:
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.pm.PackageManager android.content.Context.getPackageManager()' on a null object reference
public static boolean checkPlayServices() {
int resultCode = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(mContext);
if (resultCode != ConnectionResult.SUCCESS) {
if (GoogleApiAvailability.getInstance().isUserResolvableError(resultCode)) {
GoogleApiAvailability.getInstance().getErrorDialog((Activity) mContext, resultCode, PLAY_SERVICES_RESOLUTION_REQUEST);
} else {
Toast.makeText(mContext, "This Device is not Supported!", Toast.LENGTH_LONG).show();
}
return false;
}
return true;
}
MyUtils.java:
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.pm.PackageManager android.content.Context.getPackageManager()' on a null object reference
public static boolean checkPlayServices() {
int resultCode = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(mContext);
if (resultCode != ConnectionResult.SUCCESS) {
if (GoogleApiAvailability.getInstance().isUserResolvableError(resultCode)) {
GoogleApiAvailability.getInstance().getErrorDialog((Activity) mContext, resultCode, PLAY_SERVICES_RESOLUTION_REQUEST);
} else {
Toast.makeText(mContext, "This Device is not Supported!", Toast.LENGTH_LONG).show();
}
return false;
}
return true;
}
日志cat错误:
@Override
protected void onResume() {
super.onResume();
utils.checkPlayServices();
}
调用此方法时出现此错误,我不明白我的应用程序为何崩溃此方法与checkplayServices()方法无关:
private void getHistory(){
/*字符串assetNo=null;
Bundle bun=getIntent().getExtras();
如果(bun!=null){
assetNo=bun.getString(RecyclerAdapter.KEY\u VEH\u NUM,null);
}*/
字符串startDate=tvDate.getText()+“”+tvStartTime.getText();
字符串endDate=tvDate.getText()+“”+tvEndTime.getText();
Call Call=Utils.retroInterface.getHistory(“SG00iX”,“Android”,Integer.parseInt(LogInActivity.SharedReferences.getString(LogInActivity.KEY\u RESULT\u MSG,null)),“GBE8185Y”,startDate,endDate);
call.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
对于(int i=0;i
编辑:最终得到答案,列表未初始化,初始化如下,解决了问题:
private void getHistory() {
/*String assetNo = null;
Bundle bun = getIntent().getExtras();
if (bun != null) {
assetNo = bun.getString(RecyclerAdapter.KEY_VEH_NUM, null);
}*/
String startDate = tvDate.getText() + " " + tvStartTime.getText();
String endDate = tvDate.getText() + " " + tvEndTime.getText();
Call<ModelHistory> call = Utils.retroInterface.getHistory("SG00iX", "Android", Integer.parseInt(LogInActivity.sharedPreferences.getString(LogInActivity.KEY_RESULT_MSG, null)), "GBE8185Y", startDate, endDate);
call.enqueue(new Callback<ModelHistory>() {
@Override
public void onResponse(Call<ModelHistory> call, Response<ModelHistory> response) {
for (int i = 0; i < response.body().getData().size(); i++) {
Log.i("lat long : ", response.body().getData().get(i).getLocLat() + " " + response.body().getData().get(i).getLocLon());
listLat.add(Double.valueOf(response.body().getData().get(i).getLocLat()));
listLat.add(Double.valueOf(response.body().getData().get(i).getLocLon()));
}
showInMap(listLat, listLong);
}
@Override
public void onFailure(Call<ModelHistory> call, Throwable t) {
Log.i("no, ", "its failure" + t.toString());
}
});
}
listLat=newarraylist;
listLon=新的数组列表;
根据
好吧,一开始我没有初始化UTIL,我不应该初始化它,它的静态方法我可以直接使用 然后在您的
checkPlayServices中传递上下文
,如下面的代码所示
试试这个
listLat = new ArrayList<Double>;
listLon = new ArrayList<Double>;
而不是像这样调用此方法
public static boolean checkPlayServices(Context mContext) {
int resultCode = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(mContext);
if (resultCode != ConnectionResult.SUCCESS) {
if (GoogleApiAvailability.getInstance().isUserResolvableError(resultCode)) {
GoogleApiAvailability.getInstance().getErrorDialog((Activity) context, resultCode, PLAY_SERVICES_RESOLUTION_REQUEST);
} else {
Toast.makeText(mContext, "This Device is not Supported!", Toast.LENGTH_LONG).show();
}
return false;
}
return true;
}
你在哪里初始化的utils
?可能是mContext
是空的好吧,一开始我没有初始化utils,我不应该初始化它,它的静态方法我可以直接使用。所以,现在我把代码改为AppUtils.checkPlayServices();但这仍然没有帮助error@MoFaizanShaikh检查我的下面的ans仅将一个新参数作为上下文传递
已尝试,但仍然是相同的错误。我想这与上下文无关,还有其他一些:(@MoFaizanShaikh分享你的整个崩溃日志,以及整个UTIL类的问题我已经编辑了我的问题,请有一个look@MoFaizanShaikh共享您的整个应用程序检查我的编辑我有共享的方法哪里出错