Android开发:统计已填写EditText数量并传值至另一Activity
解决EditText数据统计与跨Activity传递问题
我来帮你搞定这个需求!咱们分两步走:先统计已填写的EditText内容,再把统计结果和数据传递到下一个Activity。
第一步:在当前Activity统计并收集数据
首先,我们可以把20个EditText的引用存到一个数组里,这样遍历起来更方便。然后给提交按钮添加点击事件,在事件里完成统计和数据收集:
import android.content.Intent; import android.os.Bundle; import android.widget.Button; import android.widget.EditText; import androidx.appcompat.app.AppCompatActivity; import java.util.ArrayList; import java.util.List; public class SelectActivity extends AppCompatActivity { private EditText[] editTexts; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_select); // 初始化20个EditText的引用(根据你实际的id调整命名) editTexts = new EditText[20]; editTexts[0] = findViewById(R.id.edit_text_1); editTexts[1] = findViewById(R.id.edit_text_2); // ... 依次初始化剩下的18个EditText,直到editTexts[19] Button submit = findViewById(R.id.your_submit_button_id); submit.setOnClickListener(v -> { List<String> filledContent = new ArrayList<>(); // 遍历所有EditText,筛选已填写的内容 for (EditText et : editTexts) { String input = et.getText().toString().trim(); // 排除只输入空格的情况 if (!input.isEmpty()) { filledContent.add(input); } } // 获取已填写的数量 int filledCount = filledContent.size(); // 准备跳转到下一个Activity Intent intent = new Intent(SelectActivity.this, TargetActivity.class); // 传递已填写数量(int类型) intent.putExtra("KEY_FILLED_COUNT", filledCount); // 传递已填写的内容数组 intent.putExtra("KEY_FILLED_DATA", filledContent.toArray(new String[0])); startActivity(intent); }); } }
第二步:在目标Activity接收数据
接下来在你要跳转的Activity里,获取传递过来的数量和数据:
import android.content.Intent; import android.os.Bundle; import androidx.appcompat.app.AppCompatActivity; public class TargetActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_target); Intent receivedIntent = getIntent(); // 获取已填写数量,第二个参数是默认值(如果没拿到数据就返回0) int filledCount = receivedIntent.getIntExtra("KEY_FILLED_COUNT", 0); // 获取已填写的内容数组 String[] filledData = receivedIntent.getStringArrayExtra("KEY_FILLED_DATA"); // 现在你就可以使用filledCount和filledData了 // 示例:打印到日志或者显示在UI上 if (filledData != null) { for (String content : filledData) { // 处理每个已填写的内容,比如TextView显示 } } } }
注意事项
- 确保所有EditText的id都正确对应,不要遗漏初始化
- 使用
trim()可以避免用户只输入空格被误判为已填写 - 如果需要传递更复杂的对象,可以考虑使用
Parcelable接口,但这里字符串数组完全够用 - 接收数据时的默认值要合理,比如
filledCount默认0,防止空指针异常
内容的提问来源于stack exchange,提问作者Arpan Sarkar
相关产品推荐
相关产品推荐

