2016-03-15 2 views
0

Я хотел, чтобы несколько тостов присутствовали в одной функции onClick, которую я определил в xml.Множество тостов для Android

public void confirm(View v) { 
    Name = text1.getText().toString(); 
    age = text2.getText().toString(); 
    phonenumber = text3.getText().toString(); 
    gender=""; 

    if(r1.isChecked()) 
     gender="MALE"; 
    else if(r2.isChecked()) 
     gender="FEMALE"; 
    else 
     Toast.makeText(getApplicationContext(),"Select Gender",Toast.LENGTH_LONG).show(); 
    if (Name.length()==0) 
     Toast.makeText(getApplicationContext(),"Name Is A Mandatory Field",Toast.LENGTH_LONG).show(); 
    if(age.length()>3 || age.length()==0) 
     Toast.makeText(getApplicationContext(),"Enter Correct Age",Toast.LENGTH_LONG).show(); 
    if(age.length()>0 && Name.length()>0 && gender.length()>0 && phonenumber.length()>0) 
     Toast.makeText(getApplicationContext(), "OTP Sent", Toast.LENGTH_LONG).show(); 

    } 
} 

Это, похоже, не работает. Только пол работает. Другие не работают вообще.

+0

Вы уверены, что если условия «истинны»? –

+0

Совет: не использовать выражения if без брекетов. Это не только трудно читать, но и очень подвержен ошибкам. – cybergen

+2

Вероятно, вы не хотите складывать такие тосты. Вы должны либо иметь диалоговое оповещение пользователя о проблемах условий, либо размещать все сообщение в одном сжатом тосте. Помимо этого, вы уверены, что ваши условия выполнены? – zgc7009

ответ

-1

Используйте если (Name.trim(). Equals ("")) вместо если (name.length == 0)

public void confirm(View v) { 
    Name = text1.getText().toString(); 
    age = text2.getText().toString(); 
    phonenumber = text3.getText().toString(); 
    gender=""; 

    if(r1.isChecked()) 
     gender="MALE"; 
    else if(r2.isChecked()) 
     gender="FEMALE"; 
    else 
     Toast.makeText(getApplicationContext(),"Select Gender",Toast.LENGTH_LONG).show(); 
    **if (Name.trim().equals(""))** 
     Toast.makeText(getApplicationContext(),"Name Is A Mandatory Field",Toast.LENGTH_LONG).show(); 
    **if(age.length()>3 || age.trim().equals(""))** 
     Toast.makeText(getApplicationContext(),"Enter Correct Age",Toast.LENGTH_LONG).show(); 
    if(age.length()>0 && Name.length()>0 && gender.length()>0 && phonenumber.length()>0) 
     Toast.makeText(getApplicationContext(), "OTP Sent", Toast.LENGTH_LONG).show(); 
} 
+0

Пожалуйста, по крайней мере, добавьте некоторое объяснение в свой ответ. – GoRoS

+0

Это выглядит как копия/вставка его кода ... – zgc7009

0

Это будет поймать какой бы ошибка приходит первым. Я бы предложил упорядочить их по порядку поля ввода в пользовательском интерфейсе.

if(!r1.isChecked && !r2.isChecked) 
    Toast.makeText(getApplicationContext(),"Select Gender",Toast.LENGTH_LONG).show(); 
else if (Name.length()==0) 
    Toast.makeText(getApplicationContext(),"Name Is A Mandatory Field",Toast.LENGTH_LONG).show(); 
else if(age.length()>3 || age.length()==0) 
    Toast.makeText(getApplicationContext(),"Enter Correct Age",Toast.LENGTH_LONG).show(); 
else if(age.length()>0 && Name.length()>0 && gender.length()>0 && phonenumber.length()>0) 
    Toast.makeText(getApplicationContext(), "OTP Sent", Toast.LENGTH_LONG).show(); 
else if(r1.isChecked()) 
    gender="MALE"; 
else if(r2.isChecked()) 
    gender="FEMALE"; 

Это не идеальный способ проверки ввода пользователем. Это не очень хорошая идея, когда мультфильм-тосты появляются один за другим. На веб-сайте, если пользователь пропустил несколько полей, вы можете получить специальное уведомление, пожалуйста, введите все поля или просто отправьте уведомление о первом пропущенном поле, а затем, когда это будет сделано, появится следующее уведомление о отсутствующем поле.

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