Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 计算填充的文本字段_Java_Android_Android Edittext - Fatal编程技术网

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吗?我不能只制作一个字符串数组吗?我忘了列表了。你现在能得到计数值吗?