2011-12-25 25 views
0

ファイルをロードして、res/rawディレクトリに保存する必要があります。ここに私のコードは次のとおりです。Android 2.1で静的ファイルを読み込むことができません

package com.ggd543.android; 

import android.app.Activity; 
import android.content.res.Resources; 
import android.os.Bundle; 
import android.widget.TextView; 

import java.io.IOException; 
import java.io.InputStream; 

public class FileActivity extends Activity { 
    /** 
    * Called when the activity is first created. 
    */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     loadText(); 
    } 

    private void loadText() { 
//  InputStream is = Resources.getSystem().openRawResource(R.raw.text); 
     InputStream is = getResources().openRawResource(R.raw.text); 
     try { 
      byte[] buf = new byte[is.available()]; 
      is.read(buf, 0, buf.length); 
      ((TextView) findViewById(R.layout.main)).setText(new String(buf, "UTF-8")); 
     } catch (IOException e) { 
      e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. 
     } 
    } 
} 

}

私はエミュレータ上.apkを展開し、それを起動すると、私は次のエラーを得た:

12-25 14:33:38.096: ERROR/AndroidRuntime(3077): Uncaught handler: thread main exiting due to uncaught exception 
12-25 14:33:38.106: ERROR/AndroidRuntime(3077): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.ggd543.android/com.ggd543.android.FileActivity}: android.content.res.Resources$NotFoundException: Resource ID #0x7f030000 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512) 
     at android.app.ActivityThread.access$2200(ActivityThread.java:119) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863) 
     at android.os.Handler.dispatchMessage(Handler.java:99) 
     at android.os.Looper.loop(Looper.java:123) 
     at android.app.ActivityThread.main(ActivityThread.java:4363) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:521) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
     at dalvik.system.NativeStart.main(Native Method) 
     Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f030000 
     at android.content.res.Resources.getValue(Resources.java:891) 
     at android.content.res.Resources.openRawResource(Resources.java:816) 
     at android.content.res.Resources.openRawResource(Resources.java:798) 
     at com.ggd543.android.FileActivity.loadText(FileActivity.java:23) 
     at com.ggd543.android.FileActivity.onCreate(FileActivity.java:19) 
     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459) 
     ... 11 more 

は、誰も私の提案を与えることができますか?

Thx

答えて

1

ファイルをassetsフォルダに移動します。

次に、このInputStream is = getAssets().open("fileName");

のようなストリームを取得しますが、その後、ファイル名が= "mytxtfile.txt" 資産/ mytxtfile.txt を持っている場合

+0

それは動作しますが、アンドロイドシステムでは 'res/raw'ディレクトリ内でそれを見つけることができません。 –

+0

@ getResources()。openRawResource(com.YourProject.R.raw.text);' – Rick

+0

私は今朝起きたときに動作します –

1

ファイル名は何ですか?あなたが/ res/rawに 'abcd.txt'というファイルを持っていれば、リソースID "R.raw.abcd"、つまり3桁の内線番号を除いてそれを開くと仮定します。

+0

私のファイル名は 'res/raw'ディレクトリに' text'です –

+0

ファイルの名前を変更して 'text.txt'などの拡張子を付けることができますか? ? –

+0

それは動作しないと申し訳ありません –

関連する問題