AsyncTask로 백그라운드에 파일 읽어오기 시키려고 하는데 getAssets이라는 assets폴더에 있는 파일 여는 메소드가
mainActivity가 아닌 다른 클래스에 넣어놓으면 사용이 안되는데 혹시 방법있움??
분명히 검색하다가 'getAssets는 mainactivity에서만 쓸 수 있나요?' 라는 질문을 본 적 있었는데 당시 필요없어서 넘겼는데 지금 아무리찾아봐도 안나온다..ㅠㅠ
아래가 소스코드얌..
class aAsyncTask extends AsyncTask<String, String, String> {@Override
protected String doInBackground(String... strings) {
try {
InputStreamReader inputreader = new InputStreamReader(this.getAssets().open("dic.csv"), "euc-kr");
BufferedReader buffereader = new BufferedReader(inputreader);
List<String> list = new ArrayList<String>();
String line;
do {
line = buffereader.readLine();
list.add(line);
} while (line != null);
그 부분에서 this란 부분은 Activity가 아닌 AsyncTask 를 가르킴
AsyncTask 에는 getAssets이란 메소드가 당연히 없고 그 클래스가 MainActivity 안에 있으면 MainActivity.this 로 써봐라
만약 그 클래스가 MainActivity 밖이면 MainActivity.this는 안 먹히고 싱글톤으로 MainActivity 객체를 가져오던가 해야함
어 MainActivity.this.getAssets 해주면 되는게 맞는건가?
액티비티 전달하고 Activity. 으로접근해야됨. Activity나 Context
객체 개념이 없네 - dc App
메인액티비티 안이야! 해보고 형댓글봤는데 한게맞는듯 너무감사 ㅠㅠ