2013-06-23 30 views
1

我試圖實現GA運動測量通過這個鏈接如下這裏 https://developers.google.com/analytics/devguides/collection/android/v2/campaigns#campaign-params谷歌Play廣告系列衡量 - NullPointerException異常

所以,我已經完成了一切,但它給我的代碼NullpointerException

// Get the intent that started this Activity. 
     Intent installIntent = this.getIntent(); 
     Uri Installuri = installIntent.getData(); 

     EasyTracker.getInstance().setContext(this); 
     if (installIntent != null) { 
      EasyTracker.getTracker().setCampaign(Installuri.getPath()); //line 82 
      } 

這是代碼,它應該做的一般跟蹤。沒什麼特別的。然而,在上面提到的第82行中,它拋出了NullPointerException。這裏是logcat的:

06-23 19:54:54.864: E/AndroidRuntime(13773): at android.os.Looper.loop(Looper.java:137) 
06-23 19:54:54.864: E/AndroidRuntime(13773): at android.app.ActivityThread.main(ActivityThread.java:4441) 
06-23 19:54:54.864: E/AndroidRuntime(13773): at java.lang.reflect.Method.invokeNative(Native Method) 
06-23 19:54:54.864: E/AndroidRuntime(13773): at java.lang.reflect.Method.invoke(Method.java:511) 
06-23 19:54:54.864: E/AndroidRuntime(13773): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
06-23 19:54:54.864: E/AndroidRuntime(13773): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
06-23 19:54:54.864: E/AndroidRuntime(13773): at dalvik.system.NativeStart.main(Native Method) 
06-23 19:54:54.864: E/AndroidRuntime(13773): Caused by: java.lang.NullPointerException 
06-23 19:54:54.864: E/AndroidRuntime(13773): at uk.co.futurelite.elite.drum.machine.Main.onCreate(Main.java:82) 
06-23 19:54:54.864: E/AndroidRuntime(13773): at android.app.Activity.performCreate(Activity.java:4465) 
06-23 19:54:54.864: E/AndroidRuntime(13773): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
06-23 19:54:54.864: E/AndroidRuntime(13773): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1931) 
06-23 19:54:54.864: E/AndroidRuntime(13773): ... 11 more 

所以,我IF語句檢查它,如果它不是像null

if (installIntent != null) { 

那麼,會發生什麼,這引發NullPointerException異常?當它通過IF聲明。

PS。我沒有完成它,直到結束,但可能是我傳遞一些東西到廣播接收器,我可以在logcat中它接收到的競選成功如下看到:

06-23 19:54:56.544: W/GAV2(13773): Thread[GAThread,5,main]: Service unavailable (code=1), will retry. 
06-23 19:54:56.824: I/GAV2(13773): Thread[GAThread,5,main]: Campaign found: utm_source%3Dxdebugx%26utm_medium%3Dbutton 

,但應用程序本身崩潰和犯規開始。

+0

你能告訴我們什麼是空嗎?它是EasyTracker.getTracker()嗎? –

+0

@StephaneMathis,根據logcat的第82行拋出NullPointer。它是'EasyTracker.getTracker()。setCampaign(Installuri.getPath());'這一行 – Daler

+0

是的,但是這一行是什麼?因爲getTracker()可以返回null,所以null對象上的setCampain也會給你一個NullPointerException。 –

回答

1

在嘗試調用.getPath()之前,您需要檢查URI是否爲空。在你所提到的文件,它是這樣寫的:

if (intent.getData() != null) { 
    EasyTracker.getTracker().setCampaign(uri.getPath()); 
} 

在您的代碼段使用的風格,它應該是這樣的:

// Get the intent that started this Activity. 
Intent installIntent = this.getIntent(); 
Uri Installuri = installIntent.getData(); 

EasyTracker.getInstance().setContext(this); 
if (Installuri != null) { 
    EasyTracker.getTracker().setCampaign(Installuri.getPath()); //line 82 
} 
+0

嗨大衛,我面臨類似的問題。每次我都會在Installuri中看到null,即使我可以看到logcat中發現的Campaign。如果我在URI中有null,那麼我將如何發送數據到谷歌分析? – Gem

相關問題