13

我的代码是:

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)。任何人都可以启发我吗?

非常感谢

巴兹

4

5 回答 5

28

改成

 public static void ToastMemoryShort (Context context) {

        Toast.makeText(context, context.getString(R.string.toast_memoryshort), Toast.LENGTH_LONG).show();
        return;
        }
于 2011-09-07T09:46:55.357 回答
5

只需使用它:

makeText(Context context, int resId, int duration) 制作一个标准 toast,它只包含一个文本视图,其中包含来自资源的文本。

来自http://developer.android.com/reference/android/widget/Toast.html

于 2011-09-07T09:48:15.330 回答
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) );
于 2015-04-05T22:14:35.290 回答
0

你应该改变

CharSequence text = getString(R.string.toast_memoryshort); //error here

为了:

CharSequence text = context.getString(R.string.toast_memoryshort);

getString函数在Context#getString(int)中实现

于 2016-06-10T14:45:23.207 回答
0

使用以下代码获得所需的输出:

Toast.makeText(getApplicationContext(),getString(R.string.exit_survey_toast),Toast.LENGTH_LONG).show();

exit_survey_toast替换为您的字符串值。

于 2019-07-11T09:56:00.980 回答