2014-11-25 1 views
1

Не получив никаких ошибок, я просто зациклен на этой фразе friggin if. Я хочу, чтобы оператор if в основном говорил, что флажок не установлен, а 3 EditTexts пусты, а затем распечатать тост. В противном случае не печатайте тост и продолжайте следующую операцию. Сначала я устанавливаю значение флажка в t/f для true/false, а затем выполняю мои операторы if следующим образом.Если вы сделаете следующее заявление, чтобы показать тост или перейти к следующему действию

CheckBox noPtD1 = (CheckBox) findViewById(R.id.noPTD1); 
String noPt_D1 = "f"; 
if (noPtD1.isChecked()) { 
    noPt_D1 = "t"; 
} 



if (noPt_D1.equals("f") && day1_inst.equals("") || day1_uniform.equals("") || 
day1_location.equals("")) 
{ 
    Toast.makeText(getApplicationContext(), "Please Enter All Data Or Select the NO PT THIS DAY 
    checkbox!", Toast.LENGTH_LONG).show(); 
} 
if(noPt_D1.equals("t") || !day1_inst.equals("") && !day1_uniform.equals("") && 
!day1_location.equals("")) 
{ 
    //PASS VARIABLES WITH INTENT 
    Intent intent = new Intent (OneWeekPlan_Start_Btn.this, Week1Day2.class); 

    //PASS VARIABLES FOR DAY 1 
    intent.putExtra("noPt_D1", noPt_D1); 
    intent.putExtra("day1_inst", day1_inst); 
    intent.putExtra("day1_uniform", day1_uniform); 
    intent.putExtra("day1_location", day1_location); 
    intent.putExtra("d1hours", d1hours); 
    intent.putExtra("d1min", d1min); 
    intent.putExtra("d1x1", d1x1); 
    intent.putExtra("d1x2", d1x2); 
    intent.putExtra("d1x3", d1x3); 
    intent.putExtra("d1x4", d1x4);    
    startActivity(intent); 
} 

Это работает тогда, кроме меня проверить флажок и запустить следующую активность с помощью кнопки следующей деятельность выскакивает, как предполагается, но по-прежнему появляется тост. Что я испортил?

Я получил это Я отправил свой ответ ниже. Но перефразировать именно то, что было моим намерением:

Если пользователь НЕ установил флажок и оставляет все 3 входных текста пустым, покажите тост и не продолжайте следующую операцию.

Если пользователь установил флажок, DONT покажет тост и продолжит следующую операцию.

+0

Попробуйте изменить это значение в Toast build: Toast.LENGTH_LONG to Toast.LENGTH_SHORT. –

+0

Вы имеете в виду значение u в atlyast 1 редактировать текст? – Deepzz

+0

Почему первое условие проверяет ИЛИ Условие и второе условие AND.day1_inst, как вы объявляете эту переменную в своем коде. – sri

ответ

2

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

if ("f".equals(noPt_D1) && "".equals(day1_inst) || "".equals(day1_uniform) || 
    "".equals(day1_location)) 
    { 
     Toast.makeText(getApplicationContext(), "Please Enter All Data Or Select the NO PT THIS DAY 
     checkbox!", Toast.LENGTH_LONG).show(); 
    } 
    if("t".equals(noPt_D1) || !"".equals(day1_inst) && !"".equals(day1_uniform) && 
    !"".equals(day1_location)) 
    { 
     //PASS VARIABLES WITH INTENT 
     Intent intent = new Intent (OneWeekPlan_Start_Btn.this, Week1Day2.class); 

     //PASS VARIABLES FOR DAY 1 
     intent.putExtra("noPt_D1", noPt_D1); 
     intent.putExtra("day1_inst", day1_inst); 
     intent.putExtra("day1_uniform", day1_uniform); 
     intent.putExtra("day1_location", day1_location); 
     intent.putExtra("d1hours", d1hours); 
     intent.putExtra("d1min", d1min); 
     intent.putExtra("d1x1", d1x1); 
     intent.putExtra("d1x2", d1x2); 
     intent.putExtra("d1x3", d1x3); 
     intent.putExtra("d1x4", d1x4);    
     startActivity(intent); 
    } 
+0

thats все еще показывая тост когда я нажимаю кнопку – dtrodriguez

+0

тост всегда виден ?. и «Toast.LENGTH_LONG» занимает некоторое время, чтобы невидимый от 5 до 10 секунд. –

+0

@dtrodriguez cheers ... :) –

1

Попробуйте использовать OnCheckedChangeListener Слушатель, как показано ниже, Что:

CheckBox noPtD1 = (CheckBox) findViewById(R.id.noPTD1); 
String noPt_D1 = "f"; 
noPtD1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
       if (isChecked) { 
        noPt_D1 = "t"; 
       } else { 
        noPt_D1 = "f"; 
       } 
      } 
     }); 
1

Заменить getApplicationContext() с этим, если вы находитесь в деятельности. getActivity(), если вы в фрагменте.

3

Используйте скобки внутри, если оператор

if (noPt_D1.equals("f") && (day1_inst.equals("") || day1_uniform.equals("") || 
day1_location.equals(""))) 
{ 

} 
if(noPt_D1.equals("t") || (!day1_inst.equals("") && !day1_uniform.equals("") && 
!day1_location.equals(""))) 
{ 

} 
2

Попробуйте проверить EditText значения через length() значения String. Во-вторых поставил && оператора, если заявление, потому что вы сказали, в вашем вопросе: if a check box is not checked and 3 EditTexts are empty then print a toast. Otherwise dont print the toast and continue to the next activity.

if (noPt_D1.equals("f") && day1_inst.trim().length() == 0 && day1_uniform.trim().length() == 0 && 
          day1_location.trim().length() == 0) 
{ 
    Toast.makeText(getApplicationContext(), "Please Enter All Data", Toast.LENGTH_LONG).show(); 
} 
else 
{ 
    Intent intent = new Intent (OneWeekPlan_Start_Btn.this, Week1Day2.class); 

    intent.putExtra("noPt_D1", noPt_D1); 
    intent.putExtra("day1_inst", day1_inst); 
    intent.putExtra("day1_uniform", day1_uniform); 
    intent.putExtra("day1_location", day1_location); 
    intent.putExtra("d1hours", d1hours); 
    intent.putExtra("d1min", d1min); 
    intent.putExtra("d1x1", d1x1); 
    intent.putExtra("d1x2", d1x2); 
    intent.putExtra("d1x3", d1x3); 
    intent.putExtra("d1x4", d1x4);    
    startActivity(intent); 
} 

EDIT:

Убедитесь, что вы должны объявить ваши строки, которые я предполагаю, являются:

String day1_inst = your_editText_inst.getText().toString(); 
String day1_uniform = your_editText_uniform.getText().toString(); 
String day1_location = your_editText_location.getText().toString(); 
String noPt_D1 = "f"; 
if(your_check_box.isChecked()) 
{ 
    noPt_D1 = "t"; 
} 
else 
{ 
    noPt_D1 = "f"; 
} 
3

Вы делаете небольшую ошибку в состоянии PLUS вам нужно использовать if - else вместо 2, если блоки

//surround all && conditions inside separate braces 
if (noPt_D1.equals("f") && (day1_inst.equals("") || day1_uniform.equals("") || 
day1_location.equals(""))) 
{ 
    //show toast 
} 
else if(noPt_D1.equals("t") || (!day1_inst.equals("") && !day1_uniform.equals("") && 
!day1_location.equals(""))) 
{ 
    //start activity 
} 

Надеюсь, это поможет.

1

Просто понял это благодаря M S Gadag =)

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

int showToast = 0; 

if("t".equals(noPt_D1) || !"".equals(day1_inst) && !"".equals(day1_uniform) && 
!"".equals(day1_location)) 
{ 
    //PASS VARIABLES WITH INTENT 
    Intent intent = new Intent (OneWeekPlan_Start_Btn.this, Week1Day2.class); 

    //PASS VARIABLES FOR DAY 1 
    intent.putExtra("noPt_D1", noPt_D1); 
    intent.putExtra("day1_inst", day1_inst); 
    intent.putExtra("day1_uniform", day1_uniform); 
    intent.putExtra("day1_location", day1_location); 
    intent.putExtra("d1hours", d1hours); 
    intent.putExtra("d1min", d1min); 
    intent.putExtra("d1x1", d1x1); 
    intent.putExtra("d1x2", d1x2); 
    intent.putExtra("d1x3", d1x3); 
    intent.putExtra("d1x4", d1x4);    
    startActivity(intent); 

    showToast = 1; 
}  

if ("f".equals(noPt_D1) && "".equals(day1_inst) || "".equals(day1_uniform) || 
"".equals(day1_location)) 
{ 
    if (showToast !=1) 
    { 
     Toast.makeText(getApplicationContext(), "Please Enter All Data Or Select the NO PT THIS 
     DAY checkbox!", Toast.LENGTH_LONG).show(); 
    } 
} 
+0

приветствую n, если мой ответ помог вам взломать его или принять его как ans buddy .. :) –

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