有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java计数填充的文本字段

我正在构建一个应用程序,它有多个EditText字段和一个Button
作为参考,Button应该根据填充的EditText字段打开一个新的Activity(我还没有提到这个)

那么,让我们假设
1) 如果第三个Editext字段有一些值,则按钮将打开第三个Activity
2) 若第四个Editext字段有一些值,按钮将打开第四个Activity
每一个EditText字段都是这样

问题是,如何计算填充的文本字段


共 (5) 个答案

  1. # 1 楼答案

    我目前没有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;
        .
        .
        .
    }
    
  2. # 2 楼答案

    你可以这样做。。但你必须补充一点

    android:tag="et"在布局的所有Edittext字段中。。相应地更改代码中的父布局类型。它能正常工作

    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++;
               }
            }
        }
    }
    

    在计算的基础上,你可以做出决定

  3. # 3 楼答案

    循环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++;
    }
    

    所以你的名字已经记下来了

  4. # 4 楼答案

    正如您强调的那样,CountFilled FileDS()方法将帮助您获得下面的填充字段计数。据我所知,这将是一个完整的解决方案

    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;
    }
    }
    
  5. # 5 楼答案

    您可以使用一些标志来设置填充的editText字段的计数

    将所有editText引用添加到列表中。并使用下面的方法获得计数

    int count =0;
    private int getEditTextViewCount(List<EditText> editTexts){
        for(EditText editText : editTexts){
            if(!editText.getText().toString().isEmpty()){
                count++;
            }
        }
        return count;
    }