App gets white and Suspending All Threads in LogCat

1

Galera, I'm studying Android on my own and in my studies I created a game of the gallows, except that when I replace the word to be discovered in String "word" with a word that contains repeated letters like "Horse" white for a few moments in the emulator and then stops responding.

I believe the error appears because of this method:

while(parciais.contains(Character.toString(letras_possiveis[numero].charAt(0)))){
    numero = random.nextInt(26);
}

I believe this because when I put the code as a comment the error stops appearing. I searched the net and read something saying that you can not put many commands in OnCreate because this causes an error.

package mateus.studio.com.forca;

import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.Random;

public class MainActivity extends AppCompatActivity {

String palavra = "CAVALO", parciais = "", parciais_botoes = "", letrasacertadas="";
String[] letras_possiveis = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"};
char[] letras_botoes = new char[25];
String[] letras_certas = new String[palavra.length()];
int erros = 0;

TextView txt_tela, txt_erro;
ImageView imagem;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

txt_tela = (TextView) findViewById(R.id.txt_palavra);
txt_erro = (TextView) findViewById(R.id.txt_erro);
imagem = (ImageView) findViewById(R.id.img_status);

int botoes_letras[] = {R.id.button0, R.id.button1, R.id.button2, R.id.button3, R.id.button4,
        R.id.button5, R.id.button6, R.id.button7, R.id.button8, R.id.button9,
        R.id.button10, R.id.button11, R.id.button12, R.id.button13, R.id.button14, R.id.button15,
        R.id.button16,R.id.button17, R.id.button18, R.id.button19, R.id.button20, R.id.button21,
        R.id.button22, R.id.button23, R.id.button24};



  for (int a = 0; a < 25; a++){
    try {
        letras_botoes[a] = palavra.charAt(a);
        parciais = parciais + letras_botoes[a];
    }catch (StringIndexOutOfBoundsException e){
        Random random = new Random();
        int numero = random.nextInt(26);

        //verifica se a letra gerada pelo random já saiu e só sai do loop quando tem-se uma nova

        while(parciais.contains(Character.toString(letras_possiveis[numero].charAt(0)))){
            numero = random.nextInt(26);
        }
        //Coloca as letras no letras_botões (Mas só depois que formar o nome)

        letras_botoes[a] = letras_possiveis[numero].charAt(0);
        parciais = parciais + letras_botoes[a];
    }
}

//fOR QUE BUGA CASO TENHA LETRAS IGUAIS
 for (int a = 0; a< 25; a++) {
     Random aleatatorio = new Random();
     int al = aleatatorio.nextInt(25);
     while (parciais_botoes.contains(Character.toString(letras_botoes[al]))) {// Código que buga a parada toda
         al = aleatatorio.nextInt(25);                                         // Código que buga a parada toda
     }

     parciais_botoes = parciais_botoes + letras_botoes[al];

     //aQUI DEVE SE COLOCAR O CODIGO DE INSTANCIAR OS BOTO
     final Button botao;
     botao = (Button) findViewById(botoes_letras[a]);
     botao.setText(Character.toString(letras_botoes[al]));


 }

for (int a = 0; a < letras_certas.length; a++){
    if (letras_certas[a] == null){
        letras_certas[a]="_ ";
    }
}

for (int a = 0; a < palavra.length(); a++){
    txt_tela.setText("_ " + txt_tela.getText());
}

}



public void verifica_letra(View view) {
    letrasacertadas = txt_tela.getText().toString();
txt_tela.setText("");
            for (int i = 0; i < palavra.length(); i++) {
            String texto = ((Button) view).getText().toString() ;
            if (palavra.charAt(i) == texto.charAt(0)) {
                letras_certas[i] = texto;

                //  ta de boa, não mexe, pelo amor de Jeová

            } else {
            ((Button)         view).setBackgroundColor(Color.parseColor("#800000"));
        }

    verifica_erro(view);
}

 for (int a = 0 ; a < letras_certas.length ; a++){
 txt_tela.setText(txt_tela.getText() + letras_certas[a]);

 }
}    
   public void verifica_erro (View view){
if (palavra.contains(((Button) view).getText().toString())) ((Button) view).setBackgroundColor(Color.parseColor("#006400"));
else {
    ((Button) view).setBackgroundColor(Color.parseColor("#800000"));
    erros ++;

}

   if (letrasacertadas.equals(palavra)){
       setContentView(R.layout.venceu);
   }else {
   switch (erros/palavra.length()){
   case 0:
       imagem.setImageResource(R.drawable.base);
       break;

   case 1:
       imagem.setImageResource(R.drawable.a);
       break;
   case 2:
       imagem.setImageResource(R.drawable.b);
       break;
   case 3:
       imagem.setImageResource(R.drawable.c);
       break;

   case 4:
       imagem.setImageResource(R.drawable.d);
       break;

   case 5:
       imagem.setImageResource(R.drawable.e);
       break;

   case 6:
       imagem.setImageResource(R.drawable.f);
       break;

   default:
       setContentView(R.layout.perdeu);
       break;
   }}

   txt_erro.setText("Erros: "+erros/palavra.length());

}
}

This is what I see in logcat:

01-19 22:26:47.815 30117-30117/? E/Zygote: v2
01-19 22:26:47.815 30117-30117/? I/libpersona: KNOX_SDCARD checking this for 10116
01-19 22:26:47.815 30117-30117/? I/libpersona: KNOX_SDCARD not a persona
01-19 22:26:47.815 30117-30117/? I/SELinux: Function: selinux_compare_spd_ram , priority [2] , priority version is VE=SEPF_SM-    G530H_5.0.2-1_0018
01-19 22:26:47.815 30117-30117/? E/SELinux: [DEBUG] get_category: variable seinfo: default sensitivity: NULL, cateogry: NULL
01-19 22:26:47.815 30117-30117/? I/art: Late-enabling -Xcheck:jni
01-19 22:26:47.905 30117-30117/? D/TimaKeyStoreProvider: in addTimaSignatureService
01-19 22:26:47.915 30117-30117/? D/TimaKeyStoreProvider: Cannot add TimaSignature Service, License check Failed
01-19 22:26:47.915 30117-30117/? D/ActivityThread: Added TimaKesytore provider
01-19 22:26:48.135 30117-30117/mateus.studio.com.forca D/DisplayManager: DisplayManager()
01-19 22:26:48.355 30117-30130/mateus.studio.com.forca I/art: Background partial concurrent mark sweep GC freed 247(41KB) AllocSpace objects, 0(0B) LOS objects, 62% free, 4MB/12MB, paused 11.957ms total 45.761ms
01-19 22:26:52.035 30117-30123/mateus.studio.com.forca W/art: Suspending all threads took: 21.840ms
01-19 22:26:52.545 30117-30123/mateus.studio.com.forca W/art: Suspending all threads took: 30.195ms
01-19 22:26:53.055 30117-30123/mateus.studio.com.forca W/art: Suspending all threads took: 38.104ms
01-19 22:26:58.055 30117-30123/mateus.studio.com.forca W/art: Suspending all threads took: 23.713ms
01-19 22:26:58.545 30117-30123/mateus.studio.com.forca W/art: Suspending all threads took: 17.573ms
01-19 22:26:59.795 30117-30130/mateus.studio.com.forca W/art: Suspending all threads took: 5.640ms
01-19 22:26:59.825 30117-30130/mateus.studio.com.forca I/art: Background sticky concurrent mark sweep GC freed 176441(5MB) AllocSpace objects, 0(0B) LOS objects, 30% free, 8MB/12MB, paused 6.563ms total 48.098ms
01-19 22:27:00.315 30117-30130/mateus.studio.com.forca W/art: Suspending all threads took: 8.270ms
01-19 22:27:00.355 30117-30130/mateus.studio.com.forca I/art: Background sticky concurrent mark sweep GC freed 173108(5MB) AllocSpace objects, 0(0B) LOS objects, 30% free, 8MB/12MB, paused 9.271ms total 53.534ms
01-19 22:27:00.545 30117-30123/mateus.studio.com.forca W/art: Suspending all threads took: 5.498ms
01-19 22:27:02.585 30117-30123/mateus.studio.com.forca W/art: Suspending all threads took: 49.126ms
01-19 22:27:03.455 30117-30129/mateus.studio.com.forca I/art: WaitForGcToComplete blocked for 34.767ms for cause HeapTrim
01-19 22:27:06.065 30117-30123/mateus.studio.com.forca W/art: Suspending all threads took: 22.617ms
01-19 22:27:09.065 30117-30123/mateus.studio.com.forca W/art: Suspending all threads took: 12.519ms
01-19 22:27:12.085 30117-30123/mateus.studio.com.forca W/art: Suspending all threads took: 25.450ms
01-19 22:27:19.105 30117-30123/mateus.studio.com.forca W/art: Suspending all threads took: 25.492ms
01-19 22:27:23.495 30117-30129/mateus.studio.com.forca I/art:     WaitForGcToComplete blocked for 27.446ms for cause HeapTrim
    
asked by anonymous 20.01.2016 / 15:38

0 answers