2016-09-21 106 views
-3

我有一個方法返回一個null對象作爲捕獲異常的結果。然而,當我試圖檢查這個對象我收到以下錯誤:在Android應用程序中的NullPointerException

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 
'android.content.res.Resources android.content.Context.getResources()' on a 
null object reference 

我的功能如下:

public static DataPoint getDataFromArray() { 
    try { 
     return dataPoints[xIndex][yIndex]; 
    } 
    catch (ArrayIndexOutOfBoundsException e) { 
     DataPoint dp = null; 
     return dp; 
    } 
} 

在下面的代碼正在檢查返回值:

DataPoint dp = getDataFromArray(); 

if(dp == null) { 
    Toast.makeText(AppContext.getAppContext(), "Out of bounds.", Toast.LENGTH_SHORT).show(); 
    finish(); 
} 

如果我無法將null分配給我的DataPoint對象,那麼應如何處理此檢查?謝謝!

解決應用程序上下文後,我看到的錯誤:

java.lang.RuntimeException: Unable to start activity 
ComponentInfo{com.myandroid.myapp/com.myandroid.myapp.activities. 
DataEntryActivity}: 
java.lang.NullPointerException: Attempt to read from field 
'short com.myandroid.myapp.Constants$DataPoint.status' on a null object reference 

我提供的,所以我不知道爲什麼它沒有首先使用破壞該活動的代碼之後被讀取,這statusfinish()方法。

+2

你_Context_爲空 – Piyush

+0

@Piyush可能是一個愚蠢的問題,但爲什麼呢? – petehallw

+0

嘗試從Application類中檢索上下文,我認爲該命令是Application.getContext()不完全確定,未使用Android Studio幾個月 – Cruces

回答

0

您的應用程序的上下文爲空。

因爲當您調用:AppContext.getAppContext()時,上下文尚未設置。

你應該在這個答案看一看: https://stackoverflow.com/a/21994818/4585226

public class MyApp extends Application { 
private static Context mContext; 

    public static MyApp getInstance() { 
     return instance; 
    } 

    public static Context getContext() { 
     // return instance.getApplicationContext(); 
     return mContext; 
    } 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
    // instance = this; 
    mContext = getApplicationContext();  
    } 
+0

謝謝,我明白了。然而,我現在得到這個錯誤'java.lang.NullPointerException:嘗試從字段'short com.myapp。$ DataPoint.status'上讀取與我的空對象有關的空對象引用',我認爲這可能是導致問題也... – petehallw

+0

我沒有看到你的問題中的這個錯誤,你應該添加它。 – 476rick

+0

編輯帖子:-) – petehallw

相關問題