2017-02-12 22 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