При запуске приложения для тестирования оно вылетает
Всем привет! я написал небольшой тестовый код, хотел попробовать сделать чтобы в TextView по очереди вводились буквы из массива, а потом удалялись.
Так как реализация с таймером мне вообще не понравилась, сделал так чтобы класс выполнялся в другом потоке, и когда нужно я его останавливаю.
только вот при тесте приложение вылетает + в сохраненной версии мой чудо код не работает Не совсем понимаю в чем может быть проблема, буду благодарен любому совету!
public class Class1 extends Thread {
MainActivity Ma = new MainActivity(); //объявил класс где распологается TextView который буду изменять
private int TimeToWriteWord = 250;
private int TimeToDeleteWord = 150; // Переменные для остоновки потока, при написании слова, паузе, и удалении
private int Wait = 750;
String[] Eng = { "", "H", "E", "L", "L", "O", "!" };
String[] Fr = { "", " B", "O", "N", "J", "O", "U", "R", "!" };
String[] Spn = { "", "P", "R", "О", "S", "P", "E", "R", "A", "D", "L", "O", "!" };
String[] Nem = { "", "G", "U", "T", "E", "N", " ", "T", "A", "G", "!" }; //Массивы с словами
String[] Chin = { "", "你", "好", "!" };
String[] Kor = { "", "안", "녕", "하", "세", "요", "!" };
String[] Ita = { "", "S", "A", "L", "V", "E", "!" };
String HolowWord; //Пустое слово в которое буду добавлять буквы из массива
public void run(){
Random rnd = new Random();
int a = rnd.nextInt( 8); /*Создаю рандомное число на основе которого
будет выводится слово на другом язые*/
switch (a){
case 1: word(this.Eng); break;
case 2: word(this.Fr); break;
case 3: word(this.Spn); break;
case 4: word(this.Nem); break;
case 5: word(this.Chin); break;
case 6: word(this.Kor); break;
case 7: word(this.Ita); break;
}
}
public void word(String[] arr) // Метод который принимает массив с словом
{
for(int i = 0; i < arr.length; i++)
{
this.HolowWord += arr[i]; //Добавляет по новой букве в прееменную, потом в TextVieW
Ma.TextBaba.setText(this.HolowWord); //TextBaba это название TextView ^|^
StopThreadForAWhile(TimeToWriteWord);
}
StopThreadForAWhile(Wait);
this.HolowWord = "";
for(int i = arr.length; i > 0; i--)
{
for(int j = 0; j < arr.length; j++)
{
if (j < i)
{
this.HolowWord += arr[j];
Ma.TextBaba.setText(this.HolowWord);
}
}
StopThreadForAWhile(TimeToDeleteWord);
this.HolowWord = "";
}
}
private void StopThreadForAWhile(int Time){
try {
Thread.sleep(Time);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
}
Источник: Stack Overflow на русском