использование строкового ресурса в тосте
Мой код:
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) из типа Context" в Eclipse. Я пытаюсь подготовиться к локализации моего приложения (получение всех жестко закодированных строк в ресурсы), поэтому у меня есть:
getString(R.string.toast_memoryshort)
У меня ранее была строка с жесткой кодировкой, которая была в порядке.
Я не уверен, что происходит здесь (Java noob). Может ли кто-нибудь просветить меня, пожалуйста?
Большое спасибо
Баз
Ответы
Ответ 1
Просто используйте это вместо:
makeText (контекст контекста, int resId, int duration) Сделать стандартным тост, который просто содержит текстовое представление с текстом из ресурса.
Из http://developer.android.com/reference/android/widget/Toast.html
Ответ 2
Изменить на
public static void ToastMemoryShort (Context context) {
Toast.makeText(context, context.getString(R.string.toast_memoryshort), Toast.LENGTH_LONG).show();
return;
}
Ответ 3
Вы можете сделать свой тост более общим:
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) );
Ответ 4
Вы должны изменить
CharSequence text = getString(R.string.toast_memoryshort); //error here
для
CharSequence text = context.getString(R.string.toast_memoryshort);
Функция getString
реализована в Контекст # getString (int)
Ответ 5
Используйте код ниже, чтобы получить желаемый результат:
Toast.makeText(getApplicationContext(),getString(R.string.exit_survey_toast),Toast.LENGTH_LONG).show();
замените exit_survey_toast вашим строковым значением.