2013-04-25 1 views
0

Я пытаюсь добавить строку к следующей положительной кнопке предупреждающего окна, но она продолжает рассылать сообщения об ошибках.setPositiveButton в AlertDialog, используя строки?

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
builder.setMessage(R.string.checkNetwork).setTitle(
     R.string.checkNetworkTitle); 
builder.setIcon(R.drawable.ic_warning); 
builder.setPositiveButton(android.R.string.continue, new warningContinue()); 
AlertDialog dialog = builder.create(); 
dialog.show(); 

Любая помощь? Кажется, он работает для названия и сообщения, однако не для кнопки ...

Заранее спасибо.

EDIT: Ошибка говорит:

Метод setPositiveButton (интермедиат, DialogInterface.OnClickListener) в тип AlertDialog.Builder не применяется для аргументов (класс, warningContinue)

Так что, кажется, ожидается целое число, но мне было интересно, есть ли способ использовать строки для целей локализации?

EDIT2:

Хорошо, черт возьми. Проблема связана с именем строки; по какой-то причине это не позволит мне назвать мою строку. o_O

+0

Не могли бы вы изменить свой вопрос с ошибкой, которую вы получите? – britzl

+0

Что означает «не для кнопки»? – Blackbelt

ответ

1

R.string.warningButton - это всего лишь int в вашем файле R.java. Чтобы получить ассоциированную строку использовать следующую строку:

builder.setPositiveButton(getString(R.string.warningButton), new warningContinue()); 

Как упоминался другими, не используйте android.R.string.continue, поскольку он не существует в системе.

+0

Спасибо человек. Работала со следующими: builder.setPositiveButton (R.string.warningButton, new warningContinue()); – momo

+0

Вы правы, решение, которое я вам предоставил, относится к более общему случаю: 'builder.setButton (DialogInterface.BUTTON_POSITIVE, getString (R.string.warningButton), new warningContinue());' – Mangusto

+0

Существует два метода определения кнопки тексты. Берет CharSequence/String, а другие принимает идентификатор ресурса в строку: setPositiveButton (интермедиат textId, DialogInterface.OnClickListener слушатель) и setPositiveButton (CharSequence текст, DialogInterface.OnClickListener слушатель) – britzl

2

Вы не хотите использовать «android.R.string.continue». «имя пакета» .R.string.continue - это то, что вы хотите. Это обычный способ, которым вы занимаетесь локализацией в Android. Идентификатор обеспечивает многоязычную поддержку автоматически на основе пользовательского системного языка. Вам просто нужно создать несколько каталогов «значений». https://developer.android.com/guide/topics/resources/localization.html предоставляет дополнительную информацию о локализации.

Также вы не можете использовать «продолжить» как имя, использовать «str_continue» или что-то в этом роде (это то же самое для «return» или «break» ect.). Они зарезервированы в java. Для получения дополнительной информации вы можете прочитать ссылку:

Поскольку вы не публикуете код «warningContinue()», я думаю, вы знаете, что он должен расширять «DialogInterface.OnClickListener()». Также вы должны подумать о том, чтобы написать свой первый символ в верхнем регистре по причинам соглашения, для получения дополнительной информации прочтите этот ответ в stackoverflow: https://stackoverflow.com/a/414029/2238341

+2

Правильно, нет никакой системы Строки имени android.R.string.continue. Существует, однако, множество других предопределенных строк, которые вы можете использовать: android.R.string.cut, android.R.string.ok, android.R.string.cancel и т. Д.) – britzl

Смежные вопросы