1



以下にアクティビティを追加しました。ここで、ColorStateList オブジェクトを解析したい 独自のカスタム xml 文字列を作成しようとしています。

public class MainActivity extends Activity {

final String colorVals = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" + 
        "<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">" +
   "<item android:color=\"#333\" android:state_focused=\"true\" />" +
   "<item android:color=\"#fff\" android:state_pressed=\"true\" />" +
   "<item android:color=\"#666\" android:state_enabled=\"false\" />" +
   "<item android:color=\"#222\"/>" +
 "</selector>";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    try {

        XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
        factory.setNamespaceAware(true);
        XmlPullParser parser = factory.newPullParser();
        String xml = colorVals;
        InputStream is = new ByteArrayInputStream(xml.getBytes("UTF-8"));

        parser.setInput(is, "UTF-8");
        Resources res = getResources();
        ColorStateList colors = ColorStateList.createFromXml(res, parser);
        TextView tv = new TextView(this);
        tv.setTextColor(colors);
    } catch (Exception e) {
        Log.e("test", e.getMessage());
    }
}
}


そうしようとすると、次のエラーが発生します。

10-22 16:23:04.006: E/test(16127): START_TAG (空) http://schemas.android.com/apk/res/android}android:color='#333' { http://schemas .android.com/apk/res/android }android:state_focused='true'>@1:166 in java.io.InputStreamReader@41dcc110: タグには「android:color」属性が必要です。


作成したパーサーをデバッグすると、属性セットに
attr[i] ="Android",
attr[i+1]="color"
が表示されます。パーサーのインスタンス化が間違っている可能性があります。

4

0 に答える 0