2013-02-19 76 views
1

我有一個包含2個函數的類:的NullPointerException在

public class FileHandler extends Activity { 
public void writeToFile(){ 
    String fileName = "lastDevice.txt"; 
    try { 


     FileOutputStream fos = openFileOutput(fileName, MODE_PRIVATE); //Exception thrown here 

     fos.write("some device id".getBytes()); 
     fos.close(); 

     Toast.makeText(this, "File updated", Toast.LENGTH_SHORT).show(); 
    } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 
public String readFromFile(){ 
    try { 
     String fileName = "lastDevice.txt"; 

     FileInputStream fis = openFileInput(fileName); //Exception thrown here 
     InputStreamReader isr = new InputStreamReader(fis); 
     BufferedReader br = new BufferedReader(isr); 
     String sLine = null; 
     String data =""; 
     while ((sLine = br.readLine())!=null) { 
      data+= sLine; 
     } 
     return data; 
    } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     return "FileNotFoundException"; 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     return "IOException"; 
    } catch (NullPointerException e){ 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     return "Null Pointer Exception"; 
    } 
} 

這些功能都從我的主要活動如下調用:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 


    lvDevices = (ListView)findViewById(R.id.ListViewDevices); 
    lastDeviceTxt = (TextView)findViewById(R.id.lastDeviceTxt); 

    //get last connected device 
    FileHandler fh = new FileHandler(); 
    String last = fh.readFromFile(); 

    lastDeviceTxt.setText(last); 
} 

,但我不斷收到來自兩種功能NullPointerException
當從我的MainActivity運行功能(我將它們複製到我的主要活動),他們工作正常。 我在做什麼錯? (請記住,我對android開發非常陌生)。

+1

*我不斷收到來自兩個函數的NullPointerException * =>拋出異常的行是什麼? – assylias 2013-02-19 14:09:55

+0

請添加錯誤日誌 – Ekonion 2013-02-19 14:09:59

+2

getDateTime gdt = new getDateTime();這是什麼意思 ? – Triode 2013-02-19 14:10:44

回答

1

您已將FileHandler定義爲活動。無法實例自己一個活動,你在這裏做什麼:

FileHandler fh = new FileHandler(); 

活動需要由Android框架(否則其上下文設置不正確)實例化。

如果你不想在自己的Activity中使用這些方法,那麼你可以把它們放在另一個類中。但是,該類不能從Activity繼承。然後你會發現你需要將你的Activity的Context傳遞給這些方法,以便他們可以調用如下方法:openFileInput()

相關問題