2017-11-18 644 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看看 –

相關問題