2017-11-18 642 views
-1
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.pm.PackageManager android.content.Context.getPackageManager()' on a null object reference 

这是即使我从来没有使用getPackageManager()我收到错误方法。尝试在空对象引用调用虚拟方法android.content.pm.PackageManager android.content.Context.getPackageManager()'

以下是我的代码:

AppUtils.java:

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:

@Override 
protected void onResume() { 
    super.onResume(); 
    utils.checkPlayServices(); 
} 

登录猫错误:

11-18 12:32:07.705 21076-21076/com.vtrak E/AndroidRuntime: FATAL EXCEPTION: main 
                 Process: com.vtrak, PID: 21076 
                 java.lang.RuntimeException: Unable to resume activity {com.vtrak/com.vtrak.Activities.HomeActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.pm.PackageManager android.content.Context.getPackageManager()' on a null object reference 
                  at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3334) 
                  at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3365) 
                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2690) 
                  at android.app.ActivityThread.access$900(ActivityThread.java:188) 
                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1530) 
                  at android.os.Handler.dispatchMessage(Handler.java:111) 
                  at android.os.Looper.loop(Looper.java:210) 
                  at android.app.ActivityThread.main(ActivityThread.java:5839) 
                  at java.lang.reflect.Method.invoke(Native Method) 
                  at java.lang.reflect.Method.invoke(Method.java:372) 
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1113) 
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:879) 
                 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.pm.PackageManager android.content.Context.getPackageManager()' on a null object reference 
                  at com.google.android.gms.common.zze.isGooglePlayServicesAvailable(Unknown Source) 
                  at com.google.android.gms.common.zzc.isGooglePlayServicesAvailable(Unknown Source) 
                  at com.google.android.gms.common.GoogleApiAvailability.isGooglePlayServicesAvailable(Unknown Source) 
                  at com.vtrak.Classes.Utils.checkPlayServices(Utils.java:92) 
                  at com.vtrak.Activities.HomeActivity.onResume(HomeActivity.java:66) 
                  at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1267) 
                  at android.app.Activity.performResume(Activity.java:6263) 
                  at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3319) 
                  at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3365)  
                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2690)  
                  at android.app.ActivityThread.access$900(ActivityThread.java:188)  
                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1530)  
                  at android.os.Handler.dispatchMessage(Handler.java:111)  
                  at android.os.Looper.loop(Looper.java:210)  
                  at android.app.ActivityThread.main(ActivityThread.java:5839)  
                  at java.lang.reflect.Method.invoke(Native Method)  
                  at java.lang.reflect.Method.invoke(Method.java:372)  
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1113)  
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:879)  

我得到这个错误当调用此方法时,我不明白为什么我的应用程序崩溃此方法无关checkplayServices()方法:

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 = new ArrayList<Double>; 
listLon = new ArrayList<Double>; 
+0

你在哪里初始化'utils' ? –

+0

可能是**'mContext' **为空 – Prem

+0

好吧,我没有先初始化utils的,我是不是不应该对其进行初始化,它的静态方法我可以直接使用。 –

回答

1

your Above Comment

Alright I didn't initialize utils at first, I was not not supposed to initialize it, its static method I can use directly.

比通过ContextcheckPlayServices如下面的代码

试试这个

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

比调用此方法像这样

@Override 
protected void onResume() { 
    super.onResume(); 
    AppUtils.checkPlayServices(YourActivity.this); 
} 
+0

,但还是同样的错误。我想它不是背景下,还有别的东西:( –

+0

@MoFaizanShaikh分享您的整体崩溃日志,并与问题 – Prem

+0

我已经编辑我的问题PLZ看看 –

相关问题