Предполагая, что вы написали приведенный выше код в методе onCreate (), первоначально все ваши тексты редактирования будут пустыми, поэтому ваш Integer.parseInt(all_value1.get(i).getText().toString())
выдаст NumberFormatException .
Решение для попытки перехвата, такое как:
for (int i = 0; i < all_value1.size(); i++) {
try {
c[i] = Integer.parseInt(all_value1.get(i).getText().toString());
} catch (Exception e) {
c[i] = 0;
}
}
бесполезен, так как это инициализирует полный массив a [] с 0, и вам придется назначить TextChangedListener для всех ваших редактируемых текстов, если вы хотите что-топроизойти (т.е. изменить значение соответствующего a [i]) при вводе чего-либо в ваш EditText.
Простым решением было бы сделать массив не целочисленного типа, а самого типа EditText (если вы действительно не хотите использовать функцию get () при каждом нажатии кнопки).
Попробуйте следующий код:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
List<EditText> all_value1 = new ArrayList<>();
final TextView textView = new TextView(this);
EditText editText1;
LinearLayout linearLayout = findViewById(R.id.ll);
linearLayout.addView(textView);
for (int i = 0; i < 5; i++) {
editText1 = new EditText(this);
editText1.setInputType(TYPE_CLASS_NUMBER);
all_value1.add(editText1);
linearLayout.addView(editText1);
}
final EditText a[] = new EditText[all_value1.size()];
for (int i = 0; i < all_value1.size(); i++) {
a[i] = all_value1.get(i);
}
Button b = new Button(this);
linearLayout.addView(b);
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
textView.setText(a[0].getText().toString());
}
});
}
Если вам нужно значение типа int, вы можете использовать Integer.parseInt(a[i].getText().toString())
после того, как вы ввели что-то в EditText.Это решение заставит кнопку справиться со своей задачей, если она не будет удовлетворена, вам придется назначить слушателей на EditText (s).