2017-02-12 68 views
0

我遇到下面的错误找网格布局:java.lang.IllegalStateException当我试图通过ID

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

XMLGridLayoutActivity是不同的。 您使用android.widget.GridLayoutandroid.support.v7.widget.GridLayout并尝试投射它们。

+0

谢谢你,先生。一切都完美了! – Jbwz