1

次のトーストの場合、なぜ次のコード

Toast message = Toast.makeText(getContext(), R.string.message_saved + savedFilePath, Toast.LENGTH_SHORT);

いくつかの奇妙な数字を表示します。たとえば、2131099680 / mnt / sdcard /の代わりに、目的のパスを表示します。「画像は次の場所に保存されます:/ mnt / sdcard /パス

これをどのように変更できますか?ありがとう!!!

4

2 に答える 2

6

を使用して文字列リソースIDから取得することにより、トーストを作成するに両方の文字列をまとめるだけです。Context#getString()String

String text = getContext().getString(R.string.message_saved) + savedFilePath;

Toast message =  Toast.makeText(getContext(), text, Toast.LENGTH_SHORT);

あなたが印刷する前に、そのint表現R.string.message_savedは実際にはRにあるものであり、整数だけです。

textまたは、次のように入力して文字列の使用をスキップできます

getContext().getString(R.string.message_saved) + savedFilePath;

Toastの2番目の引数に直接ありますが、わかりやすくするために別の文字列を使用して行いました。

getContext()OPが拡張されているため、上記の回答を使用しましたViewViewこのメソッドを持っているContextので、このシナリオでを取得する有効な方法です。ただし、注意すべき重要な点は、実際の問題は、 (インスタンスを渡すのContextではなくアクティビティ内にいる場合は)を取得する方法を選択することではなく、文字列からを取得する方法を選択することでした。リソースIDView,ActivitymakeText()String

于 2013-02-13T04:18:52.867 に答える
1

これを試して

Toast.makeText(getApplicationContext(), getApplicationContext().getResources.getString(R.string.imgval), Toast.LENGTH_SHORT).toShow();
于 2013-02-13T04:18:26.583 に答える