использование строкового ресурса в тосте

мой код:

public static void ToastMemoryShort (Context context) {
    CharSequence text = getString(R.string.toast_memoryshort); //error here
    Toast.makeText(context, text, Toast.LENGTH_LONG).show();
    return;
    }

но я получаю "не могу сделать статическую ссылку на нестатический метод getString (int) из контекста типа" в Eclipse. Я пытаюсь подготовиться к локализации моего приложения (получение всех жестко закодированных строк в ресурсы), поэтому у меня есть:

getString(R.string.toast_memoryshort)

у меня ранее была жестко закодированная строка, которая была в порядке.

Я не уверен, что здесь происходит (Java noob). Кто-нибудь может просветить меня, пожалуйста?

много спасибо

баз

4 ответов


просто использовать это вместо этого:

makeText (контекст контекста, int resId, int duration) сделать стандарт тост, который содержит только текст с текстом из ресурсов.

от http://developer.android.com/reference/android/widget/Toast.html


заменить на

 public static void ToastMemoryShort (Context context) {

        Toast.makeText(context, context.getString(R.string.toast_memoryshort), Toast.LENGTH_LONG).show();
        return;
        }

вы могли бы сделать свой тост более общим, как это:

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" );

или путем ссылки на строки.xml, как это:

toast( this.getString(R.string.toast_memoryshort) );

вы должны изменить

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

для:

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

на getString функция реализована в контекст#getString (int)