开发者

The application has stopped unexcepetedly

Android tells me that The application has stopped unexcepetedly, but there are no error's in my code.

package com.example.helloandroid;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.TableLayout;

public class HelloAndroid extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        for(int i = 0; i < 6; i++) {
            TableLayout tl = (TableLayout) findViewById(R.id.T);
            for(int j = 0; j < 6; j++) {
                ImageView img = (ImageView) tl.getChildAt(j);
                img.setImageResource(R.drawable.w);
            }
        }
    }
}

Logcat says:

03-03 19:25:43.550: WARN/dalvikvm(487): threadid=1: thread exiting with uncaught exception (group=0x40015560)
03-03 19:25:43.580: ERROR/AndroidRuntime(487): FATAL EXCEPTION: main
03-03 19:25:43.580: ERROR/AndroidRuntime(487): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.helloandroid/com.example.helloandroid.HelloAndroid}: java.lang.ClassCastException: android.widget.TableRow
03-03 19:25:43.580: ERROR/AndroidRuntime(487):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
03-03 19:25:43.580: ERROR/AndroidRuntime(487):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
03-03 19:25:43.580: ERROR/AndroidRuntime(487):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
03-03 19:25:43.580: ERROR/AndroidRuntime(487):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
03-03 19:25:43.580: ERROR/AndroidRuntime(487):     at android.os.Handler.dispatchMessage(Handler.java:99)
03-03 19:25:43.580: ERROR/AndroidRuntime(487):     at android.os.Looper.loop(Looper.java:123)
03-03 19:25:43.580: ERROR/AndroidRuntime(487):     at android.app.ActivityThread.main(ActivityThread.java:3683)
03-03 19:25:43.580: ERROR/AndroidRuntime(487):     at java.lang.reflect.Method.invokeNative(Native Method)
03-03 19:25:43.580: ERROR/AndroidRuntime(487):     at java.lang.reflect.Method.invoke(Method.java:507)
03-03 19:25:43.580: ERROR/AndroidRuntime(487):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
03-03 19:25:43.580: ERROR/AndroidRuntime(487):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
03-03 19:25:43.580: ERROR/AndroidRuntime(487):     at dalvik.system.NativeStart.main(Native Method)
03-03 19:25:43.580: ERROR/AndroidRuntime(487): Caused by: java.lang.ClassCastException: android.widget.TableRow
03-03 19:25:43.580: ERROR/AndroidRuntime(487):     at com.example.helloandroid.HelloAndroid.onCreate(HelloAndroid.java:17)
03-03 19:25:43.580: ERROR/AndroidRuntime(487):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
03-03 19:25:43.580: ERROR/AndroidRuntime(487):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
03-03 19:25:43.580: ERROR/AndroidRuntime(487):     ... 11 more

EDIT: The 开发者_如何学Pythonproblem was on the layout:

package com.example.helloandroid;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.TableLayout;
import android.widget.TableRow;

public class HelloAndroid extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        for(int i = 0; i < 7; i++) {
            TableLayout tl = (TableLayout) findViewById(R.id.T);
            TableRow tr = (TableRow) tl.getChildAt(i);
            for(int j = 0; j < 7; j++) {
                ImageView img = (ImageView) tr.getChildAt(j);
                img.setImageResource(R.drawable.w);
            }
        }
    }
}


Look at Logcat to see the stack trace which will pinpoint the fault location.

My guess is that findViewById() or getChildAt() is returning null, i.e. your layout isn't quite what you think it is.


TableLayout tl = (TableLayout) findViewById(R.id.T); :

The result of findViewById(R.id.T) is most likely not of type TableLayout (but not null). Try to print out findViewById(R.id.T).getClass().getName();

That's what this tells me:

Caused by: java.lang.ClassCastException: android.widget.TableRow
     at com.example.helloandroid.HelloAndroid.onCreate(HelloAndroid.java:17)


I was getting this error for the reason of wrong encoding for layout.xml. Instead of...

<?xml version="1.0" encoding="iso-8859-1"?>

...it should have been in my case:

<?xml version="1.0" encoding="utf-8"?>

Little hard to figure this one out.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜