2011-01-04 2 views
0

В моем приложении есть диалоговое окно, позволяющее пользователю выбрать элемент. Когда кнопка ok нажата, приложение должно набрать номер, связанный с элементом. Я могу получить элементы, отображаемые в диалоговом окне, и приложение знает, что это параметры, но мне трудно понять, как сделать процесс приложения, который был выбран, а затем набрать номер. Вот что у меня до сих порКак сообщить приложению, что делать после выбора элемента из диалога?

final CharSequence[] item = {"item1", "item2", "item3", "item4"}; 

     AlertDialog.Builder ab=new AlertDialog.Builder(crossingActivity.this); 
    ab.setTitle("Which item?"); 
    ab.setSingleChoiceItems(item, -1, new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int whichButton) { 
      } 
     }) 
     .setPositiveButton("Call", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int whichButton) { 
        if item = "item1"? android.intent.action.DIALtel:"number1"; 
       if item = "item2"? android.intent.action.DIALtel:"number2"; 
       if item = "item3"? android.intent.action.DIALtel:"number3"; 
       if item = "item4"? android.intent.action.DIALtel:"number4"; 

открывает диалоговое окно и позволяет выбрать элемент, а вот где я застрял. Eclipse дает мне ошибку во всех «if» s, которые говорят: «Синтаксическая ошибка на токене« if », недопустимый тип. Я думаю, что я только начинаю ошибаться, и я просто не знаю, как начать правильно ...

ответ

2

Ваши если заявления не имеет никакого смысла, вы, вероятно, хотите, чтобы прочитать на основной Java, прежде чем пытаться что-то вроде этого вы можете начать с if statements

Несколько проблем:. Я думаю, что вы пытаетесь сравнить item для строкового значения с использованием =. = является оператором присваивания, == используется для сравнения примитивов. Использование = - синтаксическая ошибка.

Однако, поскольку вы сравниваете строки, которые хотите использовать .equals.

if blah ? thing1 : thing2 является тройным оператором, я не думаю, что это то, что вы хотите здесь. Вы просто хотите что-то сделать в зависимости от выбора элемента.

if (item.equals("item1")) { 
    dialNumber("number1"); 
} else if (item.equals("item2") { 
    dialNumber("number2"); 
} 

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

+0

Технически == работает для строк, потому что они неизменяемы и объединены, однако это не рекомендуется делать и плохой стиль – LINEMAN78

+0

@ LINEMAN78 Вы правы, это не синтаксическая ошибка, и она будет работать иногда, но вы не может гарантировать, что он будет работать все время, с любым jre, так что просто путает проблему. –

+0

Согласен, я просто указывал, что оператор == только сравнивает ячейки памяти для объектов, которые для большинства JRE будут работать из-за пула строк. Но я верю, что ваше решение является правильным и должно быть реализовано. Кроме того, тройные операторы Java требуют, чтобы результат отдельных операторов возвращал что-то другое, кроме void, и был назначен, и его нельзя использовать исключительно как замену для оператора if/else. – LINEMAN78

0

Не следует ли тестировать переменную whichButton и соответствовать этому списку товаров?

Что касается использования? оператор - я не поклонник этого, в дополнение к причинам, которые дал LINEMAN78, я считаю, что это не так читаемо, как логика if-else .... но он должен работать так, как вы планировали, если ваш jre поддерживает его.

Правило большого пальца: всегда старайтесь сделать свой код доступным для чтения ... поскольку ваша база кода становится больше, тем больше усилий потребуется для ее поддержания. Тогда, в конце концов, вы не коснулись его в течение долгого времени - и вам или кому-то еще в вашей команде нужно снова изучить свой код!

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