2014-03-01 29 views
1

我有一個使用靜態方法從其他類NullPointerException異常情況下的靜態方法

public class ArticleFragment extends Fragment { 
    ... 
    // use static method to get text from file 
    String articleString = FileRead.readRawTextFile(); 
    article.setText(articleString); 
    ... 
} 

一類,然後我有類方法

public class FileRead extends Application { 

    private static Context ctx; 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     ctx = this; 
    } 

    public static Context getContext(){ 
     return ctx; 
    } 

    public static String readRawTextFile() 
    { 
     InputStream inputStream = null; 
     StringBuilder text = new StringBuilder();  
     try { 
      //**** E R R O R *********************** 
      inputStream = FileRead.getContext().getResources().openRawResource(R.raw.plik); 
      //*************************************** 
      InputStreamReader inputreader = new InputStreamReader(inputStream); 
      BufferedReader buffreader = new BufferedReader(inputreader); 
      String line; 
      while ((line = buffreader.readLine()) != null) { 
       text.append(line); 
       text.append('\n'); 
      } 
      return text.toString(); 
     } catch (Exception e) { 
      Log.e("APP", "*** "+e, e); 
      return null; 
     } 
    } 
} 

我得到錯誤NullPointerException異常。 文件在res/raw中。我認爲上下文有問題,但不知道爲什麼。

+0

'FileRead.getContext()'返回null – donfuxx

回答

1

donfuxx是對的; FileRead.getContext()爲空。

但是我們仍然可以獲得上下文!將它作爲readRawTextFile()的參數傳入。

所以就變成:

public static String readRawTextFile(Context context); 

然後更改FileRead.getContext()

inputStream = context.getResources().openRawResource(R.raw.plik); 

那麼你的方法調用改成這樣:

String articleString = FileRead.readRawTextFile(context); 

更換背景與

  • this or this.getContext() - 如果您在某個活動中調用方法
  • getActivity() - 如果您在一個片段內調用此方法(請注意:在使用前進行空檢查。如果片段未附加到活動,則getActivity()將返回null)
  • _varWithContextIn - 如果您正在調用此內部setOnClickListener,其中「this」將成爲您正在創建的onClickListener。
+0

感謝您的回覆,一開始我試圖超越它,但我得到了同樣的錯誤:( – user2357858

+0

我使用的示例代碼developer.android.com HTTPS:/ /developer.android.com/training/basics/fragments/index.html他們從字符串中獲取文本,並將其更改爲從文件中獲取文本 – user2357858

+0

它是否是上下文行上的空指針?也許嘗試更改您傳入的變量如果允許的話,將readRawTextFile從this改爲this.getContext()。 –

相關問題