2013-06-05 59 views
-2

在我的Android應用程序中,有一個代碼在服務中使用,並且必須從文件讀取信息到字符串中。我把代碼從這裏https://stackoverflow.com/a/9095665/2448623FileInputStream上的NullPointerExeption

public String readSavedData () { 
    String datax = "" ; 
    String FILENAME = "TeleportSAASPass.txt"; 
    if(datax != null){ 
    try { 
     FileInputStream fIn = openFileInput (FILENAME) ; 
     InputStreamReader isr = new InputStreamReader (fIn) ; 
     BufferedReader buffreader = new BufferedReader (isr) ; 

     String readString = buffreader.readLine () ; 
     while (readString != null) { 
      datax = datax + readString ; 
      readString = buffreader.readLine () ; 
     } 

     isr.close () ; 
    } catch (IOException ioe) { 
     ioe.printStackTrace () ; 
    } 
    } 
    return datax ; 
} 

我用這個值在吐司 MainActivity.java

String UserInfo = gps.readSavedData(); 
Toast.makeText(getApplicationContext(), UserInfo, Toast.LENGTH_LONG).show(); 

的形式來顯示信息給用戶但是,當我試圖執行這個功能我得到

java.lang.NullPointerException 
com.teleport.saas.GPSTracker.readSavedData(GPSTracker.java:294) 

變量的值在MainActivity.java

定義
// GPSTracker class 
GPSTracker gps; 

我該如何解決這個錯誤?

+3

您顯示'GPSTracker'的聲明,很好;但它在哪裏初始化? – fge

+0

它被定義但啓動?請發佈整個MainActivity –

+1

294號線在哪裏? – Oswald

回答

0

Ok so gps是GPSTracker類的一個對象。你需要使用new來初始化它。

GPSTracker gps = new GPSTracker(); 

我假設GPSTracker.java是您創建的文件。所以在技術上你應該在類中定義readSavedDate()方法。 還記得在清單中添加ACCESS_FINE_LOCATION和其他必要的權限。

退房本教程的詳細信息: http://www.androidhive.info/2012/07/android-gps-location-manager-tutorial/

希望這有助於。乾杯!

+0

我初始化GPSTracker gps = new GPSTracker(MainActivity 。這個);但我有同樣的錯誤:( – Alex

+0

那麼你應該真的看看這個教程。還要在GPSTracker.java中共享代碼。 – rtindru

+0

檢查設計挑戰其他治療 - 一切正常。給出一些原因,在行中的錯誤 - 294行 - FileInputStream fIn = openFileInput(FILENAME); – Alex

0

openFileInput(FILENAME);您設計的一種方法嗎?如果是的話,它可能會拋出錯誤,你應該檢查它。如果沒有,請閱讀關於這個函數的android文檔,它應該告訴你在哪種情況下失敗。 你確定你的文件存在?