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共享您的整个应用程序检查我的编辑我有共享的方法哪里出错