我正在构建一个具有多个EditText
字段和Button
的应用。
有关信息,应该根据已填充的Button
字段,Activity
打开一个新的EditText
(我还没有打开),
所以,让我们假设
1)如果第三个Editext
字段具有某个值,则该按钮将打开第三个Activity
2)如果第四个Editext
字段具有某个值,则按钮将打开第四个Activity
。
并且每EditText
个字段都会继续。
问题是,如何计算填充的editText字段?
答案 0 :(得分:3)
您可以像这样在“活动”中执行此操作。但是您必须添加
在布局的所有Edittext字段中 long numberOfFilledFields = Stream.of(
editText1.getText().toString(),
editText2.getText().toString(),
editText3.getText().toString()) //you can add as many as you want here
.filter(s -> !s.isEmpty())
.count();
switch (numberOfFilledFields) {
case 0:
//start activity 1
break;
case 1:
//start activity 2
break;
.
.
.
}
。.相应地在代码中更改父布局类型。它按测试方式工作。
android:tag="et"
基于计数,您可以做出决定。
答案 1 :(得分:1)
我目前没有Android SDK,因此可能会出现一些错误,但是您可以尝试执行以下操作:-
res.render('view-name', data)
答案 2 :(得分:1)
环绕您的EditText对象并知道它是否有价值;
例如,
EditText e1 = ....
EditText e2 = .....
.
.
.
EditText e10 = .....
EditText allText[] = new EditText[]{e1, e2, ...e10};
int filled = 0;
for(int i = 0; i < allText.length; i++) {
if(!allText[i].getText().toString().isEmpty())
filled++;
}
因此,您的填充数具有计数。
答案 3 :(得分:1)
您可以使用一些标志来设置已填充editText字段的数量。
将所有editText引用添加到List。并使用以下方法获取计数。
int count =0;
private int getEditTextViewCount(List<EditText> editTexts){
for(EditText editText : editTexts){
if(!editText.getText().toString().isEmpty()){
count++;
}
}
return count;
}
答案 4 :(得分:1)
正如您所强调的如何在countFilledFileds()方法下面获取填充字段计数将为您提供帮助。据我了解,您的问题将是完整的解决方案。
public class SampleActivity extends AppCompatActivity {
private EditText editText1,editText2,editText3,editText4;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sample);
Button btn = findViewById(R.id.btn);
editText1 = findViewById(R.id.editText1);
editText2 = findViewById(R.id.editText2);
editText3 = findViewById(R.id.editText3);
editText4 = findViewById(R.id.editText4);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int filledFileds = countFilledFields();
Log.d("filled", String.valueOf(filledFileds));
Class newClass = SampleActivity.class;
switch (filledFileds){
case 1:
newClass = Activity1.class;
break;
case 2:
newClass = Activity2.class;
break;
case 3:
newClass = Activity3.class;
break;
case 4:
newClass = Activity4.class;
break;
default:
}
Intent intent = new Intent(SampleActivity.this, newClass);
}
});
}
private int countFilledFields() {
ArrayList<EditText> editTexts = new ArrayList<>();
editTexts.add(editText1);
editTexts.add(editText2);
editTexts.add(editText3);
editTexts.add(editText4);
int filledNumber = 0;
for(int i = 0;i < editTexts.size() ;i++){
if(editTexts.get(i).getText()!=null && !editTexts.get(i).getText().toString().matches("")){
filledNumber += 1;
}
}
return filledNumber;
}
}