Java 具有不同条件的多个if语句
我尝试在我的Java 具有不同条件的多个if语句,java,android,if-statement,Java,Android,If Statement,我尝试在我的EditText上检查用户输入,如果有一个或多个空值,验证图像将变为红色,并且在填充所有字段之前,页面不会移动。在我的例子中,我使用多个if语句,条件不同,但是 我遇到一个问题,当我输入两个EditText并且另一个EditText为空时,页面将从当前页面移动到新页面,而不应移动该页面。 这是我的代码: if (nama_pp.getText().toString().length()==0){img_namalengkap_pp.setImageResource(R.drawabl
EditText
上检查用户输入,如果有一个或多个空值,验证图像将变为红色,并且在填充所有字段之前,页面不会移动。在我的例子中,我使用多个if语句,条件不同,但是
我遇到一个问题,当我输入两个EditText
并且另一个EditText
为空时,页面将从当前页面移动到新页面,而不应移动该页面。
这是我的代码:
if (nama_pp.getText().toString().length()==0){img_namalengkap_pp.setImageResource(R.drawable.espaj_red_checklist);}
if (ibu_pp.getText().toString().length()==0){img_namaibu_pp.setImageResource(R.drawable.espaj_red_checklist);}
if (nomor_bukti_pp.getText().toString().length()==0){img_nomeridentitas_pp.setImageResource(R.drawable.espaj_red_checklist);}
if (tempat_pp.getText().toString().length()==0){img_tempat_pp.setImageResource(R.drawable.espaj_red_checklist);}
if (ttl_pp.getText().toString().length()==0){img_tgllahir_pp.setImageResource(R.drawable.espaj_red_checklist);}
if (alamat_pp.getText().toString().length()==0){img_alamat_pp.setImageResource(R.drawable.espaj_red_checklist);}
if (kota_pp.getText().toString().length()==0){img_kota_pp.setImageResource(R.drawable.espaj_red_checklist);}
if (kdtlp1_pp.getText().toString().length()==0){img_telepon_pp.setImageResource(R.drawable.espaj_red_checklist);}
if (telp1_pp.getText().toString().length()==0){img_telepon_pp.setImageResource(R.drawable.espaj_red_checklist);}
else {
getFragmentManager().beginTransaction().replace(R.id.frame_container, new TertanggungPolis()).setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN).commit();
}
有没有一种更快的方法来编写类似的代码,并为我的问题提供最佳解决方案?非常感谢。它将移动到下一页,因为您的
else
仅与最后一个if
匹配。因此,只要最后一个测试失败,它就会转换到下一页
一个简单的修复方法是将第一个if
语句替换为else if
:
if (condition1) {
} else if (condition2) {
} else {
getFragmentManager() ...
}
您可以将所有对象放在一个列表中,然后像这样迭代该列表:
ArrayList<EditText> editTexts = new ArrayList<>(9);
editTexts.add(nama_pp);
editTexts.add(...);
boolean ready = true;
for (EditText editText : editTexts)
if (editText.getText().toString().length() == 0) { ready = false; break; }
if (ready)
getFragmentManager().beginTransaction().replace(R.id.frame_container, new TertanggungPolis()).setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN).commit();
else img_telepon_pp.setImageResource(R.drawable.espaj_red_checklist);
ArrayList EditText=新的ArrayList(9);
EditText.add(nama_pp);
编辑文本。添加(…);
布尔就绪=真;
用于(编辑文本编辑文本:编辑文本)
如果(editText.getText().toString().length()=0){ready=false;break;}
如果(准备就绪)
getFragmentManager();
else img_telepon_pp.setImageResource(R.drawable.espaj_Redu检查表);
至少打字少了
Sebastien Bianchi的想法也是一个好主意。您可以将所有编辑文本放在一个数组列表中,将相应的图像视图放在另一个数组列表中
对于空字符串,我们可以使用,TextUtils.isEmpty(string)
,如果字符串为null或空,则返回true
试试这个:
ArrayList<EditText> editTexts = new ArrayList<EditText>();
editTexts.add(nama_pp);
editTexts.add(editetext2);
ArrayList<ImageView> imageViews = new ArrayList<ImageView>();
imageViews.add(image1);
imageVioew.add(Image2);
boolean nextPage = true;
for (int i = 0; i < editTexts.length();i++)
if (editText[i].isEmpty(editText[i].getText.toString())) {
imageViews[i].setImageResource(R.drawable.espaj_red_checklist);
nextPage = false;
}
}
通过使用|
并创建isEmpty()
方法,可以使其更具可读性:
private boolean isEmpty(EditText et) {
return et.getText().toString().length() == 0;
}
然后
为什么不添加一个textWatcher呢?它更客观。你不需要考虑条件,只需询问每个EditText你的输入是否有效。工作量更少,扩展性更强。你永远不会担心有这么多EditText只是一个提示:使用安卓API的TextUtils.isEmpty(字符串)
检查它是空的还是空的。对我来说似乎是个问题。因为您的代码可以工作,所以您只想进行优化。@donfuxx足够接近,但代码本身与最后一个if block
有问题(逻辑错误)。我假设代码审查只接受工作和正确的代码?好的,如果也有bug,那么在这里就可以了;-)@AndrewT.谢谢你的提示你是否愿意解释一下你的代码以及为什么要使用它?@Zohrakan我的问题不仅仅是让我的代码更简单的更快的方法,当我输入两个EditText,而另一个EditText为空时,页面从当前页面移动到新页面,当它不应该被移动时,你可以进入Android Coders聊天室吗?我对ImageView
有不同的名字,如果我用你的方式,我想它只能对EditText
使用相同的ImageView
然后你可以在不同的if块中分开,但是你能做的就不多了。是的,这就是我以前做的,我把它分成不同的if块。我对ImageView
有不同的名称。如果我用你的方式,我想它只能对EditText
使用相同的ImageView
,但我认为你的想法与giveboolean
逻辑有关,好的,我试试看
private boolean isEmpty(EditText et) {
return et.getText().toString().length() == 0;
}
if (isEmpty(ibu_pp) || isEmpty(nomor_bukti_pp) || ... ) {
img_telepon_pp.setImageResource(R.drawable.espaj_red_checklist);
}