2012-10-17 4 views
1

안드로이드에서 파일을 읽는 것이 작업의 onCreate()에서만 작동하는지 궁금합니다. 읽기 과정이 onCreate()의 측면에 있거나 onCreate에서 호출되는 메서드의 측면에있을 때 읽기 프로세스가 작동하기 때문에이 질문이 생깁니다. 다음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 is mainActivity

+0

"KSScreen 유형의 엔 클로징 인스턴스가 범위에서 액세스 할 수 없습니다."라는 오류가 발생합니다. KKScreen이 내 주요 활동입니다. YourActivityname.this.somemethod가 허용됨을 확인했습니다. YourActivityname 내부에서 메서드를 사용할 때만 가능합니다. – Will

관련 문제