应用程序空白并暂停所有线程:问题

时间:2016-01-20 01:29:43

标签: android

我有一个小型android项目的问题。 我建立了一个刽子手游戏,当我在一个名为" palavra"的变量中用重复的字母放置一个单词时该应用程序空白。

我认为这个问题与此代码相关:

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

我相信这一点,因为当我将这篇文章定义为评论时,问题就不会再发生了。我在这里搜索并听到了onCreate方法中有太多命令的事情,最好把代码放在onCreateView()方法中,但是我自己学习并且我还不知道这个方法。 谢谢大家

我的主要活动:

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());

}
}

这就是我在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

0 个答案:

没有答案