2012-10-17 40 views
1

我想知道在android中只讀文件在onCreate()的作用下工作嗎? 我有這個問題,因爲當閱讀過程在onCreate()的一側或者在onCreate下調用的一個方法的時候,我的閱讀過程就起作用。在android上讀取文件在onCreate()

以下是我在用一個文件進行讀取

try { 
      file=""; 
      InputStream ish =  this.getResources().openRawResource(R.drawable.regular_hero_deck); 
      BufferedReader brh = new BufferedReader(new  InputStreamReader(ish)); 
      if(ish!=null){ 
       while ((data = brh.readLine()) != null) { 
        file+=data; 
       } 
      } 
      ish.close(); 
      regularDeckHero =new Deck<Hero>("heroDeck",file); 
     }catch (Exception e){//Catch exception if any 
      System.err.println("Error : reading hero deck");} 

解決方案:它與

InputStream ish =  this.getResources().openRawResource(R.drawable.regular_hero_deck); 

this.getResources(問題)是不給我想要的東西時,您需要的資源是來自您的MainActivty將此資源傳遞給此應用程序的資源。

+0

PLZ接受任何答案,如果這解決了你的問題...... :) –

回答

2

它工作的每一個地方,甚至外面的活動..

可能是以下行

InputStream ish =  this.getResources().openRawResource(R.drawable.regular_hero_deck); 

導致問題..因爲你使用這個(當前實例這是一個活動)..

通過而不是讓應用程序上下文refrence你仍然可以說

InputStream ish =  context.getResources().openRawResource(R.drawable.regular_hero_deck); 
+0

我應該如何創建getResources()的上下文? – Will

+0

我所做的就是將我主要活動的資源一直傳遞給我需要的課程。它現在不會給我錯誤。 – Will

+0

@ user1727416 ..很高興知道..更好的方法是傳遞上下文並獲取資源..您可以這樣做,** yourActivity.this.getApplicationContext()**。並傳遞給另一個類,並獲得資源.. – ngesh

0

改變這一行..

InputStream ish =  this.getResources().openRawResource(R.drawable.regular_hero_deck); 

InputStream ish =  YourActivityname.this.getResources().openRawResource(R.drawable.regular_hero_deck); 

例如YourActivityname就像mainActivity

+0

如果我這樣做,我會收到一個錯誤說:「沒有範圍內可以訪問類型KSScreen的封閉實例」KKScreen是我的主要活動,我注意到YourActivityname.this.somemethod是允許的僅當您在YourActivityname中使用該方法時。 – Will