2012-01-05 12 views
10

で置き換えている私は、簡単なトーストを作る特殊文字は私のAndroidアプリでAndroidアプリの広場

Toast.makeText(
     parent.getApplicationContext(), 
     parent.getResources().getIdentifier(result, "string", 
     parent.getPackageName()), Toast.LENGTH_LONG).show(); 

この

parent.getResources().getIdentifier(result, "string", parent.getPackageName()) 

名前がstrings.xmlから生じると一致する文字列を取得します。英語とドイツ語のstrings.xmlファイルがあります。問題は、ドイツ語のような特殊文字が正しく表示されないことです。それらは四角い記号に置き換えられます。

strings.xmlはutf-8でエンコードされています。

問題はどこで解決できますか?

+1

はないですか試していませんあなたが**正確に*なぜ*あなたがそれを必要としているか分からない限り、 'getApplicationContext()'を使用してください**。この場合、あなたはほとんどそれを必要としません。 'parent.getApplicationContext()'ではなく 'parent'を使用してください。私はあなたの問題を解決するだろうとは思っていませんが、 'Application'の誤用は奇妙なUI動作を引き起こすので、確かにそこから始めます。 – CommonsWare

+0

トーストは、アクティビティではなくAsyncTaskを拡張するクラスで実行されます。ですから、親はタスクを作成するアクティビティです... –

+1

これは、 'parent.getApplicationContext()'ではなく、 'parent'を使うべきことを意味します。 – CommonsWare

答えて

2

ArtWorkAD、

あなたの問題はあなたの特別な文字を引っ張ったときにToast.makeText()方法が正しい文字セットを使用していないことに起因しているかのようにそれが表示されますリソースから。

私はあなたがindependantlyダウンリソースから文字列を引き出し、あなたのテキストをレンダリングする

Toast.makeText(Context context, CharSequence text, int duration).show(); 

オーバーロードを使用したデバッグステップとして提案します。この方法で、テキストが期待どおりであることを確認し、問題を絞り込むことができます。代わりに、あなたが表示するためにあなたがTextViewの上で持つことができているカスタムダイアログを使用することができますトーストメッセージを使用しての

0

このstring.Nowはあなたのために

TextView textView=new TextView(this); 
    textView.setText(Html.fromHtml("your string")); 

・ホープ、この作品を使用するが、