我的代码是:
public static void ToastMemoryShort (Context context) {
CharSequence text = getString(R.string.toast_memoryshort); //error here
Toast.makeText(context, text, Toast.LENGTH_LONG).show();
return;
}
但我得到“无法从Eclipse中的类型Context”对静态方法getString(int)进行静态引用。我正在尝试本地化我的应用程序(将所有硬编码字符串转换为资源),所以我在哪里:
getString(R.string.toast_memoryshort)
我以前有一个硬编码的字符串,很好。
我不确定这里发生了什么(Java noob)。有人可以开导我吗?
非常感谢
巴兹
答案 0 :(得分:20)
更改为
public static void ToastMemoryShort (Context context) {
Toast.makeText(context, context.getString(R.string.toast_memoryshort), Toast.LENGTH_LONG).show();
return;
}
答案 1 :(得分:4)
请改用:
makeText(Context context,int resId,int duration)制作标准 toast只包含带有资源文本的文本视图。
来自http://developer.android.com/reference/android/widget/Toast.html
答案 2 :(得分:2)
你可以像这样使你的吐司更通用:
public void toast(String msg){
Context context = getApplicationContext();
CharSequence text = msg;
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
然后在需要时拨打电话:
toast( "My message hardcoded" );
或通过引用strings.xml这样:
toast( this.getString(R.string.toast_memoryshort) );
答案 3 :(得分:0)
你应该改变
CharSequence text = getString(R.string.toast_memoryshort); //error here
有:
CharSequence text = context.getString(R.string.toast_memoryshort);
getString
功能在Context#getString(int)
答案 4 :(得分:0)
使用以下代码获取所需的输出:
Toast.makeText(getApplicationContext(),getString(R.string.exit_survey_toast),Toast.LENGTH_LONG).show();
将 exit_survey_toast 替换为您的字符串值。