У меня есть код, который создает матрицу EditTexts. Код показан ниже. Пока идет процесс создания EditTexts, я хотел бы видеть, как идет этот процесс. Поэтому я поместил индикатор выполнения внизу. Раньше я использовал потоки для работы с индикаторами выполнения (я использовал Runnable), но как только я пытаюсь добавитьView из Runnable, программа вылетает с ошибкой: «Только исходный поток, создавший иерархию представлений, может коснуться свои взгляды ". Как я могу решить эту проблему? Как я могу создать матрицу editTexts с указанием прогресса в индикаторе выполнения? Заранее благодарим за любую подсказку.
import androidx.appcompat.app.AppCompatActivity;
import androidx.constraintlayout.widget.ConstraintLayout;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
public class MainActivity extends AppCompatActivity {
ProgressBar progress;
Button button;
EditText editText_array[] = new EditText[500];
ConstraintLayout layout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
progress = findViewById(R.id.progressBar);
button = findViewById(R.id.button);
View.OnClickListener onClickListener_button = new View.OnClickListener() {
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
public void onClick(View v) {
int stoop = 1;
button.setVisibility(View.INVISIBLE);
layout = findViewById(R.id.layout);
int x;
int y;
int i;
i=0;
progress.setMax(400);
ConstraintLayout.LayoutParams params = new ConstraintLayout.LayoutParams(ConstraintLayout.LayoutParams.WRAP_CONTENT, ConstraintLayout.LayoutParams.WRAP_CONTENT);
for (x=0; x<=1000; x=x + 50 ){
for (y=0; y<= 1200; y=y+60){
i++;
editText_array[i] = new EditText(MainActivity.this);
editText_array[i].setLayoutParams(params);
editText_array[i].setX(x);
editText_array[i].setY(y);
editText_array[i].setText(""+0);
layout.addView(editText_array[i]);
progress.setProgress(i);
}
}
}
};
button.setOnClickListener(onClickListener_button);
}
}
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:layout_marginRight="16dp"
android:text="Button"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="347dp"
android:layout_height="24dp"
android:layout_marginStart="32dp"
android:layout_marginLeft="32dp"
android:layout_marginBottom="24dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>