2014-09-18 2 views
0

Я делаю приложение для Android, которое позволит вам увидеть, доступна ли дата. Если дата не находится в arraylist, она будет добавлена, если дата находится в arraylist, тогда пользователь получит сообщение «попробуйте еще раз».Если оператор не работает правильно

Операция If не работает и никогда не дает сообщение «попробуйте еще раз», независимо от того, введенная дата уже находится в архаристе. Я подтвердил, что данные записываются в arraylist.

@Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.second_activity); 

      final ArrayList<String> DateArray = new ArrayList<String>(); 
      DateArray.add("0101"); //test code 

      addListenerRadioGroup(); //not important 

      mNextButton = (Button)findViewById(R.id.NextButton); 
      mNextButton.setOnClickListener(new View.OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        mEditText2 =(EditText)findViewById(R.id.editText2); 
        if (DateArray.contains(mEditText2)) { //looks for edit text info 
         Toast.makeText(getApplicationContext(), //This should pop up if user 
           "please try again", Toast.LENGTH_SHORT).show(); //enters "0101" 
        } else { 


        DateArray.add(mEditText2.getText().toString()); } 

       } 

      }); 




    } 
+1

ArrayList никогда не будет содержать объект EditText. Вам нужно преобразовать mEditText2 в эквивалент строки, а затем использовать contains. – Grice

+0

@JGrice 'mEditText2' уже будет преобразован с помощью неявного вызова' toString() 'и поэтому этот оператор' if' не работает. Необходимо извлечь желаемую информацию этого EditText, вызвав 'mEditText2.getText()'. – Tom

ответ

2

Похоже, что ваш оператор if condition проверяет, находится ли объект EditText в ArrayList. Вероятно, вы захотите проверить значение String объекта EditText, потому что в ArrayList хранятся строки.

+0

Несмотря на то, что этот шанс очень прост, он заставил бы вас ответить полностью, если вы предоставите необходимый код. – Tom

+0

Обратите внимание, что ОП знал достаточно, чтобы вызвать toString на вставке, но забыл этот шаг теста. Она была очень близка. – KevinDTimm

+2

Это просто, поэтому пример кода не нужен. – xxx

0
you are checking if condition with providing wrong condition. 


    if (DateArray.contains(mEditText2)); 

Здесь mEditText2 должен быть любым String.you передается ссылка edittext.

0

С вашей EditText вы можете поместить в ArrayList значение Строка

final ArrayList<String> DateArray = new ArrayList<String>(); 
      DateArray.add("0101"); 

DateArray.add(mEditText2.getText().toString())

Но когда смотришь на редактирование текста информацию вы chacking EditText объект не строковое значение.

Попробуйте этот способ ..

if(DateArray.contains(mEditText2.getText().toString()) 
Смежные вопросы