Java 计算填充的文本字段
我正在构建一个应用程序,它有多个Java 计算填充的文本字段,java,android,android-edittext,Java,Android,Android Edittext,我正在构建一个应用程序,它有多个编辑文本字段和一个按钮 关于信息,按钮应该根据填充的编辑文本字段打开一个新的活动(我还没有看到) 那么,让我们假设 1) 如果第三个Editext字段具有某些值,则该按钮将打开第三个活动 2) 如果第四个Editext字段有一些值,按钮将打开第四个活动 这适用于每个EditText字段 问题是,如何计算填充的editText字段?我目前没有Android SDK,因此可能会出现一些错误,但您可以尝试以下方法:- long numberOfFilledFields
编辑文本
字段和一个按钮
关于信息,
按钮
应该根据填充的编辑文本
字段打开一个新的活动
(我还没有看到)
那么,让我们假设1) 如果第三个
Editext
字段具有某些值,则该按钮将打开第三个活动
2) 如果第四个
Editext
字段有一些值,按钮将打开第四个活动
这适用于每个
EditText
字段
问题是,如何计算填充的editText字段?我目前没有Android SDK,因此可能会出现一些错误,但您可以尝试以下方法:-
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”
在布局的所有编辑文本字段中。。相应地更改代码中的父布局类型。它能正常工作
public class MainActivity extends AppCompatActivity {
int count=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LinearLayout parentLayout = (LinearLayout) findViewById(R.id.linearLayout);
int elements = parentLayout.getChildCount();
View v = null;
for(int i=0; i<elements; i++) {
v = parentLayout.getChildAt(i);
if(v.getTag()!=null && v.getTag().equals("et")){
count= count++;
}
}
}
}
public类MainActivity扩展了AppCompatActivity{
整数计数=0;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LinearLayout parentLayout=(LinearLayout)findViewById(R.id.LinearLayout);
int elements=parentLayout.getChildCount();
视图v=null;
对于(inti=0;i循环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++;
}
EditText e1=。。。。
EditText e2=。。。。。
.
.
.
EditText e10=。。。。。
EditText allText[]=新的EditText[]{e1,e2,…e10};
int-filled=0;
for(int i=0;i
因此,填充的文本具有计数。您可以使用一些标志来设置填充文本字段的计数
int count =0;
private int getEditTextViewCount(List<EditText> editTexts){
for(EditText editText : editTexts){
if(!editText.getText().toString().isEmpty()){
count++;
}
}
return count;
}
将所有editText引用添加到列表中。并使用下面的方法获取计数
int count =0;
private int getEditTextViewCount(List<EditText> editTexts){
for(EditText editText : editTexts){
if(!editText.getText().toString().isEmpty()){
count++;
}
}
return count;
}
int count=0;
private int getEditTextViewCount(列出EditText){
用于(编辑文本编辑文本:编辑文本){
如果(!editText.getText().toString().isEmpty()){
计数++;
}
}
返回计数;
}
当您强调如何获得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;
}
}
公共类SampleActivity扩展了AppCompative活动{
私有编辑文本编辑文本1、编辑文本2、编辑文本3、编辑文本4;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_示例);
按钮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(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
int filledFileds=countFilledFields();
Log.d(“filled”,String.valueOf(filledFileds));
Class newClass=SampleActivity.Class;
开关(filledFileds){
案例1:
newClass=Activity1.class;
打破
案例2:
newClass=Activity2.class;
打破
案例3:
newClass=Activity3.class;
打破
案例4:
newClass=Activity4.class;
打破
违约:
}
意向意向=新意向(SampleActivity.this,newClass);
}
});
}
私有int countFilledFields(){
ArrayList EditText=新的ArrayList();
编辑文本。添加(编辑文本1);
EditText.add(editText2);
EditText.add(editText3);
编辑文本。添加(编辑文本4);
int filledNumber=0;
对于(int i=0;i
您的editText字段是否固定?。您能告诉我您有多少editText字段吗?我将把数字存储在一个int变量中,但我正在寻找一种方法来计算字段。我有6个字段。请附上您的屏幕截图
,这将有助于更好地了解您的需求情况。好的,我知道您的要点t、 Ragesh已经给出了答案。这是一个很好的解决方案。试试吧。你能给我解释一下,为什么我要为数组制作一个新的EditText吗?我不能只制作一个字符串数组吗?我忘了列表了。你现在能得到计数值吗?