1

Androidでファイルを読み取ることは、アクティビティの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からのリソースであり、このリソースをこれに渡すと機能するはずです。

4

2 に答える 2

2

アクティビティの外でも、どこでも機能します。

以下の行かもしれません

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

これを使用するため、問題が発生します(アクティビティである現在のインスタンス)。

代わりに、アプリケーションコンテキストの参照を取得することで、次のように言うことができます

InputStream ish =     context.getResources().openRawResource(R.drawable.regular_hero_deck);
于 2012-10-17T03:58:05.483 に答える
0

この行を変更します。

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

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

例:YourActivitynameはmainActivityのようなものです

于 2012-10-17T04:32:45.527 に答える