1

对于下面的吐司,为什么下面的代码

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

显示一些奇怪的数字,例如 2131099680 /mnt/sdcard/路径而不是所需的“您的图像保存在:/mnt/sdcard/路径

这怎么可能被修改?谢谢!!!

4

2 回答 2

6

只需在制作 Toast之前将两个字符串放在一起,使用从字符串资源 idContext#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,我使用了单独的字符串。

getContext()由于 OP 正在扩展,因此使用了我的上述答案ViewView有这个方法,所以它是Context在这种情况下获得的有效方法。需要注意的重要一点是,真正的问题不是选择如何获取Context(如果您在 Activity 中而不是将实例View,传递给就足够了),而是如何从字符串中获取资源标识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 回答