Как указать приложению, что делать после выбора элемента в диалоговом окне? - PullRequest
0 голосов
/ 05 января 2011

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

 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», которая говорит «синтаксическая ошибка на токене« if », недопустимый тип.

Ответы [ 2 ]

2 голосов
/ 05 января 2011

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

Множество проблем: я думаю, что вы пытаетесь сравнить элемент со строковым значением, используя =.= является оператором присваивания, == используется для сравнения примитивов.Использование = является синтаксической ошибкой.

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

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

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

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

0 голосов
/ 06 января 2011

Разве вы не должны тестировать переменную whichButton и сопоставлять ее с вашим списком предметов?

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...