2011-12-25 4 views
0

J'ai besoin de charger un fichier text qui est placé dans le répertoire res/raw en mémoire. Voici mon code:Impossible de charger un fichier statique sur 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. 
     } 
    } 
} 

}

Quand je Déployez le .apk sur l'émulateur et le démarrer, je suis l'erreur suivante:

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 

Quelqu'un pourrait-il me donner une suggestion?

Thx

Répondre

1

Déplacez le fichier dans le dossier des actifs.

Ensuite, récupérer le flux comme celui-ci InputStream is = getAssets().open("fileName");

si vous avez des actifs/mytxtfile.txt alors fileName = "mytxtfile.txt"

+0

Cela fonctionne, mais pourquoi le système android ne peut pas le trouver dans le répertoire 'res/raw' –

+0

@ 者国者 Essayez d'ajouter le nom du paquet:' getResources(). OpenRawResource (com.YourProject.R.raw.text); ' – Rick

+0

Cela fonctionne soit quand je me suis réveillé ce matin –

1

Quel est le nom de fichier? coz selon odcs, si vous avez un fichier appelé 'abcd.txt' dans/res/raw, vous êtes supposé l'ouvrir en utilisant l'identifiant de ressource "R.raw.abcd", c'est-à-dire en excluant l'extension à 3 chiffres.

+0

mon nom de fichier est 'texte' placer dans le répertoire' res/raw' –

+0

Pouvez-vous renommer votre fichier pour avoir une extension, dites 'text.txt' ou quelque chose comme ça, et essayez à nouveau ? –

+0

Je suis désolé de vous dire que cela ne fonctionne pas –

Questions connexes