2017-02-12 11 views
0

я столкнулся следующее сообщение об ошибке:java.lang.IllegalStateException, когда я пытаюсь найти GridLayout по идентификатору

FATAL EXCEPTION: main 
    Process: com.example.android.connectthree, PID: 12307 
    java.lang.IllegalStateException: Could not execute method for android:onClick 
    at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293) 
    at android.view.View.performClick(View.java:5697) 
    at android.widget.TextView.performClick(TextView.java:10814) 
    at android.view.View$PerformClick.run(View.java:22526) 
    at android.os.Handler.handleCallback(Handler.java:739) 
    at android.os.Handler.dispatchMessage(Handler.java:95) 
    at android.os.Looper.loop(Looper.java:158) 
    at android.app.ActivityThread.main(ActivityThread.java:7229) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 
    Caused by: java.lang.reflect.InvocationTargetException 
    at java.lang.reflect.Method.invoke(Native Method) 
    at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288) 
    at android.view.View.performClick(View.java:5697)  
    at android.widget.TextView.performClick(TextView.java:10814)  
    at android.view.View$PerformClick.run(View.java:22526)  
    at android.os.Handler.handleCallback(Handler.java:739)  
    at android.os.Handler.dispatchMessage(Handler.java:95)  
    at android.os.Looper.loop(Looper.java:158)  
    at android.app.ActivityThread.main(ActivityThread.java:7229)  
    at java.lang.reflect.Method.invoke(Native Method)  
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)  
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)  
    Caused by: java.lang.ClassCastException: android.widget.GridLayout cannot be cast to android.support.v7.widget.GridLayout 
    at com.example.android.connectthree.MainActivity.playAgainClicked(MainActivity.java:74) 
    at java.lang.reflect.Method.invoke(Native Method)  
    at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)  
    at android.view.View.performClick(View.java:5697)  
    at android.widget.TextView.performClick(TextView.java:10814)  
    at android.view.View$PerformClick.run(View.java:22526)  
    at android.os.Handler.handleCallback(Handler.java:739)  
    at android.os.Handler.dispatchMessage(Handler.java:95)  
    at android.os.Looper.loop(Looper.java:158)  
    at android.app.ActivityThread.main(ActivityThread.java:7229)  
    at java.lang.reflect.Method.invoke(Native Method)  
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)  
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)  

Вот метод, который вызывает ошибку

public void playAgainClicked(View view) { 
    LinearLayout layout = (LinearLayout) findViewById(R.id.playAgainLayout); 
    layout.setVisibility(View.INVISIBLE); 

    activePlayer = 0; 
    for (int i = 0; i < gameState.length; i++) { 
     gameState[i] = 2; 
    } 
    GridLayout gridLayout = (GridLayout) findViewById(R.id.mainGrid); 
    for (int i = 0; i < gridLayout.getChildCount(); i++) { 
     ((ImageView) gridLayout.getChildAt(i)).setImageResource(0); 
    } 
} 

Gist with a full java file

Я попытался дважды проверить все, что могу, но ничего.

После отладки я узнал, что именно эта строка кода вызывает ошибку.

GridLayout gridLayout = (GridLayout) findViewById(R.id.mainGrid); 
+2

Опубликовать XML-файл. –

ответ

0

GridLayout в XML и Activity различны. Вы используете android.widget.GridLayout и android.support.v7.widget.GridLayout и попытайтесь их отличить.

+0

Спасибо, сэр. Теперь все работает отлично! – Jbwz