2013-07-12 76 views
1

我使用1活動的多任務取決於我從MainActivity傳遞的意圖。因此,如果我傳遞「是」,它將顯示並隱藏視圖的一些元素,否則它將顯示正常活動,但由於NullPointerExepction,某些時候應用程序崩潰,並且它導致我將該位置稱爲意圖字符串,就像沒有字符串通過。所以我想知道是因爲我使用的是字符串而不是布爾值。對我的情況來說更好的方法是什麼?
這裏就是我使用現在:當我調用空字符串上的.equals()時,我得到一個NullPointerException異常

public String getUserStatus(){ 
    Intent intent = getIntent(); 
    isUserLogedin = intent.getExtras().getString("userstatus"); 
    return isUserLogedin ; 
} 

,我用這個:
if(getUserStatus().equals("yes"))

+0

請問您可以放一些代碼嗎?和logcat? – Andres

+0

@Andres updated – Alamri

+0

看起來'getExtras()'的結果可能爲空。根據[documentation](http://developer.android.com/reference/android/content/Intent.html#getExtras()),['getExtras()'](http://developer.android.com/如果沒有設置額外的值,reference/android/content/Intent.html#getExtras())將返回null。 – jahroy

回答

1

Code和logcat在這種情況下會非常有幫助。不過,我可以說,如果這Activity並不總是接受在Intent一個值,那麼,如果你這樣做

if ("yes".equals(variableName)) 

它會防止null

,因爲你不會得到一個NPEString「是」。你可以試試。如果它不起作用,請發佈相關代碼和logcat。

+0

是的,這是我使用的方法,我已經更新了我的問題。它來自谷歌播放'發佈應用程序'的許多用戶報告它。 – Alamri

+0

你可以像這樣對布爾值做同樣的事情:'Boolean.TRUE.equals(someBool);' – jahroy

+0

@Alamri - 根據你在你的問題中發佈的代碼,你不是**使用相同的方法。注意這個答案建議'「X」.equals(y)'代替'y.equals(「X」)'。有很大的不同。一旦可能拋出NPE,另一個不會。 – jahroy

2

你也可以使用布爾,這將允許三態:

真的,假的,沒有設置。

+0

好點,我使用字符串作爲「是」或「否」。但這看起來很愚蠢壽..那爲什麼我問這個問題:) – Alamri

相關問題