読者です 読者をやめる 読者になる 読者になる

nuits.jp blog

C#, Xamarin, WPFを中心に書いています。Microsoft MVP for Visual Studio and Development Technologies。なお掲載内容は個人の見解であり、所属する企業を代表するものではありません。

Xamarin.Androidでリソースファイルを読み込む

Android Xamarin Visual Studio

ちょっと走り書きのメモです。

Xamarin.Androidで自作のリソースファイルを埋め込んで利用する方法を紹介します。

今回は自分で定義したXMLファイルをAssetsから読み込む例を紹介します。
他にもResourcesに追加する方法やPCL側にリソースを埋め込む方法もありますが、今回は割愛します。

まずはAssetsフォルダにリソースを登録します。
今回はMyXml.xmlというリソースを登録しています。
注意点は、ビルドアクションをAndroidAssetにすることです。(普通に追加すると最初からそうなっていると思いますが)

f:id:nuitsjp:20161229004251p:plain

XMLファイルは今回は次のようになっています。

<?xml version="1.0" encoding="utf-8" ?>
<root>Hello, World.</root>

手抜き感満載です。

そして以下のようにして読み込んで利用します。

protected override void OnCreate(Bundle bundle)
{
    base.OnCreate(bundle);

    string message;
    using (var stream = new StreamReader(Assets.Open("MyXml.xml")))
    {
        XmlDocument document = new XmlDocument();
        document.Load(stream);
        message = document.ChildNodes[1].InnerText;
    }

    SetContentView (Resource.Layout.Main);

    var messageTextView = FindViewById<TextView>(Resource.Id.MessageTextView);
    messageTextView.Text = message;
}

ActivityにAssetsというプロパティがあるので、そこからOpenすることでリソースを読み込めます。
ここではXmlDocumentクラスを使っていますが、XMLの構造が決まっているのであればXmlSerializerクラスなどを使うと良いかもしれません。

今回のサンプルを以下に公開しておきます。
よかったらご覧ください。

github.com

こんな感じで動きます。

f:id:nuitsjp:20161229004845p:plain

それではまた!