2016-01-21 4 views
0

Я занимаюсь стратегической игрой, но все время она падает.Android-приложение неожиданно перестало работать

Я использую девять кнопок для игры. Цвет кнопок по умолчанию серый, и два игрока могут играть в игру.

Первый игрок может выбрать три кнопки (красный), а второй игрок может выбрать три кнопки (зеленый).

Однако проблема в том, что я касаюсь другой кнопки (серый), кроме выше шести.

Приложение аварийно, я не знаю почему. Код прилагается ниже.

Все действия кнопка вызова перечисленных функций check() и moves()

enter image description here

b1.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 

     if(flag==0) { 
      check(b1, color1); 
     } 
     moves(b1); 
     // Toast.makeText(getApplicationContext(),""+b1.getText(),Toast.LENGTH_LONG).show(); 

    } 
}); 

Функция:

void check(Button bn,int c) 
{ 
     if (plyr == 1 && plyr1 >0&&c==Color.LTGRAY) 
     { 
      bn.setBackgroundColor(Color.RED); 
      bn.setText("RED"); 
      plyr1--; 
      plyr = 2; 
      t1.setBackgroundColor(Color.LTGRAY); 
      t2.setBackgroundColor(Color.GREEN); 
     } 

     else if (plyr == 2 && plyr2>0&&c==Color.LTGRAY) 
     { 
      bn.setBackgroundColor(Color.GREEN); 
      bn.setText("GREEN"); 
      plyr2--; 
      plyr = 1; 
      t2.setBackgroundColor(Color.LTGRAY); 
      t1.setBackgroundColor(Color.RED); 

     } 
     else if (plyr1 == 0 && plyr2 == 0) 
     { 
      flag = 1; 
     } 

} 

void moves(Button bn) 
{ 
    ColorDrawable btnclr=(ColorDrawable)bn.getBackground(); 
    int s=btnclr.getColor(); 

    if(s==Color.RED) 
    { 
     Toast.makeText(getApplicationContext(),"Exception GREEN",Toast.LENGTH_LONG).show(); 
    } 
    else if(s==Color.LTGRAY) 
    { 

    } 
    else 
    { 
     Toast.makeText(getApplicationContext(),"else",Toast.LENGTH_LONG).show(); 
    } 

} 
int adjsnt(Button adjlbl, Button rem) 
{ 
    if(rem.getText()=="b2") 


    { 
     Toast.makeText(getApplicationContext(),"Exception",Toast.LENGTH_LONG).show(); 
     return 1;} 
    return 0; 
} 

журнал кошки

java.lang.ClassCastException: андроид. графика .drawable.PaintDrawable не может быть добавлен в android.graphics.drawable.ColorDrawable at com.solutions.techblaze.nera.Nera_main.moves (Nera_main.java:250) at com.solutions.techblaze.nera.Nera_main $ 8.onClick (Nera_main.java:171) на android.view.View.performClick (View.java:4856) на android.view.View $ PerformClick.run (View.java:19956) на android.os.Handler.handleCallback (Handler.java:739) на android.os.Handler.dispatchMessage (Handler.java:95) на android.os.Looper.loop (Looper.java:211) на android.app.ActivityThread.main (ActivityThread. java: 5389) по адресу java.lang.reflect.Method.invoke (собственный метод) по адресу java.lang.reflect.Method.invoke (Method.java:372) в com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:1020) в com.android.internal.os.ZygoteInit.main (ZygoteInit.java:815)

+2

Прошу проследить трассировку ошибок logcat. – Rohit5k2

+0

См.: Http://stackoverflow.com/questions/23353173/unappro-myapp-has-stopped-how-can-i-solve-this –

+0

t1 или t2 null Я предполагаю. Однако без каких-либо журналов это сложно выяснить –

ответ

2

Как говорится в журнале PaintDrawable нельзя отбрасывать в ColorDrawable.

Когда вы делаете ColorDrawable btnclr=(ColorDrawable)bn.getBackground();, вы предполагаете, что результатом getBackground является ColorDrawable. Но в этом случае это не так. Вероятно, это связано с тем, что вы не установили цвет с setBackgroundColor на эти виды.

Одна вещь, которую вы можете сделать, это простой проверки, если объект, который getBackground возвращает это экземпляр ColorDrawable перед заливкой его:

if(bn.getBackground() instanceof ColorDrawable) 

Другая вещь, которую вы можете сделать, это установить цвет во время выполнения, чтобы все ваши Просмотры. setBackgroundColor всегда будет устанавливать на ваш взгляд ColorDrawable.

+0

Спасибо много ..он работает :) – unniraja

+0

Без проблем друг. Не забудьте отметить ответ как правильный, если он решил вашу проблему или проголосует, если это вам каким-то образом помогло. Хорошего дня :) –