質問

私はこのように私のmanifest.xmlにメタデータを指定します:

<meta-data android:value="5555555555" android:name="foo"></meta-data>

このようなメタデータにアクセスする場合:

ActivityInfo ai = act.getPackageManager().getActivityInfo(componentName, PackageManager.GET_META_DATA);
Object value = (Object)ai.metaData.get(key);

この値はintとして解釈され得る - より重要な - 間違っinterepreted(1260588259)

I型文字列にデータ型を強制的にどのような方法がある場合は疑問(ブール、int型、浮動小数点および文字列)ビルドシステムによって自動的に決定されるからである。

私は終了(「5555555555」)にスペースを追加しようとしたが、その後、値が5.5555553E9 floatとして解釈されます! )。

私はまたのgetString代わりのGETを使用してみましたが、その後はnullが返されます。

任意のアイデア? TIAます。

役に立ちましたか?

解決

番号の前にエスケープスペースを置くには、仕事に思えるます:

<meta-data android:name="foo" android:value="\ 1234567890"/>

エスケープスペースがget()によって返される値には表示されません。

私はかなりどのようにこの作品、私は正直だ場合。

見当がつかない

あなたがしたい場合は何かがに文書化され、したがって、より信頼性の高いあなたは常にリソースとしてあなたの文字列値を入れて、それを参照することができます:

<meta-data android:name="foo" android:resource="@string/mynumber"/>

他のヒント

私はまた、このような問題を抱えています。 次のように私の解決策はあります:

<meta-data android:value="5555555555\0" android:name="foo"></meta-data>

Iは変数の末尾に追加 - eskapeシーケンス「\ 0」(NULLは - しばしば(例えば、)言語のCの文字列の終わりを定義するために使用される

私にとってこの作品ます。

敬具ます。

スペースの代わりに、コロンのように、数値で何の役割も持つべきではない句読点の一部を使用してみてください、それが助けかどうかを確認します。

私は最近、この問題に出くわし、それはFacebookのアプリケーションIDのようなものが原因(もちろん)オーバーフローの問題につながる整数として解釈されていることは非常にイライラさせられます。私は/暗黙の型を上書きすることは可能であろう期待しているだろうと思いました。たとえば、代わりに:

<meta-data android:name="value" android:value="12345678901234567890" />

私たちは書くことができれば、それはいいだろう。

<meta-data android:name="value" android:type="string" android:value="12345678901234567890" />

はこれを補うために、私は次のようにが見えるようにのマニフェスト属性が必要であることをいくつかサポートするコードを書きました

<meta-data android:name="value1" android:value="string/12345678901234567890" />
<meta-data android:name="value2" android:value="integer/12345" />
<meta-data android:name="value3" android:value="boolean/true" />
<meta-data android:name="value4" android:value="float/1.34" />
<meta-data android:name="value5" android:value="float/6" />

これはAndroidの@string / @integer構文私は間接のレベルを落とすとしてこれを解釈し、@を落としていることを除いています。

のようになりためのものであることに注意してください フロートは、整数のように見えるにもかかわらず、直接的に指定するための

と同様に[0-9] +常にそれはそう整数として解釈の元の問題を解決することもできます。

本のさらなる利点は、任意のタイプのセットを拡張することが可能であることです。例えばます。

<meta-data android:name="myfrac" android:value="fraction/3/7" />
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top