0

xmlファイルを解析し、そこからデータを抽出してAndroidアプリに表示しようとしています。xmlファイルは次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
<record>
<study id="1">
    <topic>SAX Parser</topic>
    <content>Learn how to parse XML using SAXParser</content>
    <author>Pete Houston</author>
    <date>02-Oct-2011</date>
</study>

ファイルはres/rawフォルダーに保存されます。androidアクティビティは、xmlファイルを読み取ろうとし、それを解析してデータを取得する関数を呼び出します。データは、Studyタイプのオブジェクト(私が定義)に格納されます。このオブジェクトは、関数によって返されます。

私のコードのスケルトン構造を以下に示します。

public class XmlParserActivity extends Activity {
Study study=null;
protected void onCreate(Bundle savedInstanceState) {
//...android code and some variable initializations
    try{
    study = parseXml(getResources().openRawResource(R.raw.record));
    }catch(Exception e){
        e.printStackTrace();
        finish();
    }
}
public Study parseXml(InputStream is){
    //code for parsing the input stream
    return study;
}

エミュレーターでアプリを起動すると、クラッシュしてandroid.content.res.ResourcesNotFoundExceptionが発生します。xmlファイルへのアクセス方法に何か問題がありますか?または、AndroidManifest.xmlファイルにいくつかの権限を設定する必要がありますか?私はこのサイトと他のサイトを検索しましたが、私の問題に対する満足のいく解決策を見つけられませんでした。どんなご指導でもよろしくお願いします。

logcatメッセージ:

01-09 15:49:55.801: I/Process(1152): Sending signal. PID: 1152 SIG: 9
01-09 15:50:04.174: E/Trace(1198): error opening trace file: No such file or directory(2)
01-09 15:50:04.992: W/ResourceType(1198): No package identifier when getting value for resource number 0x00000001
01-09 15:50:05.002: D/AndroidRuntime(1198): Shutting down VM
01-09 15:50:05.002: W/dalvikvm(1198): threadid=1: thread exiting with uncaught exception (group=0x40a13300)
01-09 15:50:05.012: E/AndroidRuntime(1198): FATAL EXCEPTION: main
01-09 15:50:05.012: E/AndroidRuntime(1198): java.lang.RuntimeException: Unable to start activity   ComponentInfo{com.example.androidxmlparser/com.example.androidxmlparser.XmlParserActivity}: android.content.res.Resources$NotFoundException: String resource ID #0x1
01-09 15:50:05.012: E/AndroidRuntime(1198):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
01-09 15:50:05.012: E/AndroidRuntime(1198):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
01-09 15:50:05.012: E/AndroidRuntime(1198):     at android.app.ActivityThread.access$600(ActivityThread.java:130)
01-09 15:50:05.012: E/AndroidRuntime(1198):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
01-09 15:50:05.012: E/AndroidRuntime(1198):     at android.os.Handler.dispatchMessage(Handler.java:99)
01-09 15:50:05.012: E/AndroidRuntime(1198):     at android.os.Looper.loop(Looper.java:137)
01-09 15:50:05.012: E/AndroidRuntime(1198):     at android.app.ActivityThread.main(ActivityThread.java:4745)
01-09 15:50:05.012: E/AndroidRuntime(1198):     at java.lang.reflect.Method.invokeNative(Native Method)
01-09 15:50:05.012: E/AndroidRuntime(1198):     at java.lang.reflect.Method.invoke(Method.java:511)
01-09 15:50:05.012: E/AndroidRuntime(1198):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
01-09 15:50:05.012: E/AndroidRuntime(1198):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
01-09 15:50:05.012: E/AndroidRuntime(1198):     at dalvik.system.NativeStart.main(Native Method)
01-09 15:50:05.012: E/AndroidRuntime(1198): Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x1
01-09 15:50:05.012: E/AndroidRuntime(1198):     at android.content.res.Resources.getText(Resources.java:229)
01-09 15:50:05.012: E/AndroidRuntime(1198):     at android.widget.TextView.setText(TextView.java:3620)
01-09 15:50:05.012: E/AndroidRuntime(1198):     at com.example.androidxmlparser.XmlParserActivity.onCreate(XmlParserActivity.java:34)
01-09 15:50:05.012: E/AndroidRuntime(1198):     at android.app.Activity.performCreate(Activity.java:5008)
01-09 15:50:05.012: E/AndroidRuntime(1198):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
01-09 15:50:05.012: E/AndroidRuntime(1198):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
01-09 15:50:05.012: E/AndroidRuntime(1198):     ... 11 more
4

2 に答える 2

2

見つからない文字列リソースにアクセスしようとしています。

Matt Taylorが示唆しているように、アクティビティの34行目をチェックして、どの文字列リソースが間違っているかを見つける必要があります。

于 2013-01-09T10:48:05.800 に答える
0

あなたの質問に対するフィドラーのコメントに加えて、私はちょうど私が問題だと思うものを見ました:

xmlファイルには次のものが含まれている必要があります。

<study id="1">
    <topic>SAX Parser</topic>
    <content>Learn how to parse XML using SAXParser</content>
    <author>Pete Houston</author>
    <date>02-Oct-2011</date>
</study>

そして、あなたはそれを使ってそれにアクセスします: getResources().openRawResource(R.raw.<xml file name (without.xml)>);

たとえば、それが呼び出されたxmldata.xml場合は、R.raw.xmldata

于 2013-01-09T09:51:56.777 に答える