1

res / xml /フォルダーにXMLインデックスがあり、他のxmlファイルを含めたいので、R.xml.indexを解析すると、すべてのファイルが1つのリソースにマージされます。

インクルードレイアウトのトリックをxml解析に適合させようとしたので、index.xml次のようになります。

<?xml version="1.0" encoding="utf-8"?>
<Index xmlns:android="http://schemas.android.com/apk/res/android">
<Sheet>
    <include xml="o_2sq_m.xml"/>
    <include xml="o_2sq_r.xml"/>
</Sheet>
<Sheet>
    <include xml="o_sq_tr_m.xml"/>
    <include xml="o_sq_tr_r.xml"/>
</Sheet>
</Index>

o_2sq_m.xmlまた、 index.xmlと同じフォルダーにあるファイルは次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<Challenge xmlns:android="http://schemas.android.com/apk/res/android">
<Dimensions maxX="512" maxY="342" />
<Point id="1" x="94" y="101" color="0x00000000" />
...
</Challenge>

しかし、XmlPullParserを使用してindex.xmlを解析すると、デバッガーで、インクルードタグを展開せずに解析することがわかります。つまり、ファイルo_2sq_m.xmlのツリーにアクセスしません。

Androidにファイルを相互に含めるにはどうすればよいですか?

4

2 に答える 2

1

(作成時などに)XMLインポートをあまり行わない場合はgetResources().getIdentifier()、そのようなインデックスにを使用できます(.xml属性のを削除します)。

<Index xmlns:android="http://schemas.android.com/apk/res/android">
<Sheet>
    <include customAttr="o_2sq_m"/> ...
</Sheet>

含まれるファイルの名前がo_2sq_m.xmlであるとすると、次のコードを使用できます。

switch(tag) {
case "include" :
   String xmlid = xpp.getAttributeValue(null, "customAttr");
   Int xmlIncludedId = res.getIdentifier(xmlid, "xml", getPackageName());
   if(xmlIncludedId != 0) {
     // Here the xmlIncludedId can be used to import other XML files.
     // E.g. getResources().getXml(xmlIncludedId) returns an XmlResourceParser
   }
于 2012-04-11T10:08:48.570 に答える
0

このタグは、xmlファイルではなくレイアウトに使用されます。レイアウトに使用する場合、レイアウトインフレータは必要に応じて対応するファイルに置き換えます。通常のxmlでは、他のxmlと同様にタグと見なされます。私はあなたがやりたいことをすることは不可能だと思います。

于 2012-04-10T20:55:59.013 に答える