Android 运行时出现空指针异常

Android 运行时出现空指针异常,android,nullpointerexception,stack-trace,Android,Nullpointerexception,Stack Trace,我正在尝试实现3d转换效果。最终我在0x000009e7(代码=-6)处得到了空指针异常和致命信号6(SIGABRT)。下面我发布了stacktrace并指出了错误行 StackTrace: 12-05 01:51:25.672: W/System.err(2535): java.lang.NullPointerException 12-05 01:51:25.692: W/System.err(2535): at info.androidhive.tabsswipe.fragment.

我正在尝试实现3d转换效果。最终我在0x000009e7(代码=-6)处得到了
空指针异常和致命信号6(SIGABRT)。下面我发布了stacktrace并指出了错误行

StackTrace:

12-05 01:51:25.672: W/System.err(2535): java.lang.NullPointerException
12-05 01:51:25.692: W/System.err(2535):     at info.androidhive.tabsswipe.fragment.ActivitySwitcher.apply3DRotation(ActivitySwitcher.java:84)
12-05 01:51:25.692: W/System.err(2535):     at info.androidhive.tabsswipe.fragment.ActivitySwitcher.animationOut(ActivitySwitcher.java:50)
12-05 01:51:25.692: W/System.err(2535):     at info.androidhive.tabsswipe.fragment.MainActivity$SampleWebViewClient.shouldOverrideUrlLoading(StackOverflow.java:74)
12-05 01:51:25.692: W/System.err(2535):     at com.android.webview.chromium.WebViewContentsClientAdapter.shouldOverrideUrlLoading(WebViewContentsClientAdapter.java:293)
12-05 01:51:25.702: W/System.err(2535):     at com.android.org.chromium.android_webview.AwContentsClientBridge.shouldOverrideUrlLoading(AwContentsClientBridge.java:96)
12-05 01:51:25.702: W/System.err(2535):     at com.android.org.chromium.base.SystemMessageHandler.nativeDoRunLoopOnce(Native Method)
12-05 01:51:25.702: W/System.err(2535):     at com.android.org.chromium.base.SystemMessageHandler.handleMessage(SystemMessageHandler.java:27)
12-05 01:51:25.702: W/System.err(2535):     at android.os.Handler.dispatchMessage(Handler.java:102)
12-05 01:51:25.702: W/System.err(2535):     at android.os.Looper.loop(Looper.java:136)
12-05 01:51:25.712: W/System.err(2535):     at android.app.ActivityThread.main(ActivityThread.java:5017)
12-05 01:51:25.712: W/System.err(2535):     at java.lang.reflect.Method.invokeNative(Native Method)
12-05 01:51:25.712: W/System.err(2535):     at java.lang.reflect.Method.invoke(Method.java:515)
12-05 01:51:25.712: W/System.err(2535):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
12-05 01:51:25.712: W/System.err(2535):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
12-05 01:51:25.712: W/System.err(2535):     at dalvik.system.NativeStart.main(Native Method)
12-05 01:51:25.772: A/libc(2535): Fatal signal 6 (SIGABRT) at 0x000009e7 (code=-6), thread 2535 (dhive.tabsswipe)
public class ActivitySwitcher {

    private final static int DURATION = 300;
    private final static float DEPTH = 400.0f;

    /* ----------------------------------------------- */

    public interface AnimationFinishedListener {
        /**
         * Called when the animation is finished.
         */
        public void onAnimationFinished();
    }

    /* ----------------------------------------------- */

    public static void animationIn(View container, WindowManager windowManager) {
        animationIn(container, windowManager, null);
    }

    public static void animationIn(View container, WindowManager windowManager,
            AnimationFinishedListener listener) {
        apply3DRotation(90, 0, false, container, windowManager, listener);
    }

    public static void animationOut(View container, WindowManager windowManager) {
        animationOut(container, windowManager, null);
    }

    public static void animationOut(View container,
            WindowManager windowManager, AnimationFinishedListener listener) {
        apply3DRotation(0, -90, true, container, windowManager, listener); ----> 50th line
    }

    /* ----------------------------------------------- */

    private static void apply3DRotation(float fromDegree, float toDegree,
            boolean reverse, View container, WindowManager windowManager,
            final AnimationFinishedListener listener) {
        Display display = windowManager.getDefaultDisplay();
        final float centerX = display.getWidth() / 2.0f;
        final float centerY = display.getHeight() / 2.0f;

        final Rotate3dAnimation a = new Rotate3dAnimation(fromDegree, toDegree,
                centerX, centerY, DEPTH, reverse);
        a.reset();
        a.setDuration(DURATION);
        a.setFillAfter(true);
        a.setInterpolator(new AccelerateInterpolator());
        if (listener != null) {
            a.setAnimationListener(new Animation.AnimationListener() {
                @Override
                public void onAnimationStart(Animation animation) {
                }

                @Override
                public void onAnimationRepeat(Animation animation) {
                }

                @Override
                public void onAnimationEnd(Animation animation) {
                    listener.onAnimationFinished();
                }
            });
        }
        container.clearAnimation(); --->84th line error
        container.startAnimation(a);  

    }
}  
ActivitySwitcher.java:

12-05 01:51:25.672: W/System.err(2535): java.lang.NullPointerException
12-05 01:51:25.692: W/System.err(2535):     at info.androidhive.tabsswipe.fragment.ActivitySwitcher.apply3DRotation(ActivitySwitcher.java:84)
12-05 01:51:25.692: W/System.err(2535):     at info.androidhive.tabsswipe.fragment.ActivitySwitcher.animationOut(ActivitySwitcher.java:50)
12-05 01:51:25.692: W/System.err(2535):     at info.androidhive.tabsswipe.fragment.MainActivity$SampleWebViewClient.shouldOverrideUrlLoading(StackOverflow.java:74)
12-05 01:51:25.692: W/System.err(2535):     at com.android.webview.chromium.WebViewContentsClientAdapter.shouldOverrideUrlLoading(WebViewContentsClientAdapter.java:293)
12-05 01:51:25.702: W/System.err(2535):     at com.android.org.chromium.android_webview.AwContentsClientBridge.shouldOverrideUrlLoading(AwContentsClientBridge.java:96)
12-05 01:51:25.702: W/System.err(2535):     at com.android.org.chromium.base.SystemMessageHandler.nativeDoRunLoopOnce(Native Method)
12-05 01:51:25.702: W/System.err(2535):     at com.android.org.chromium.base.SystemMessageHandler.handleMessage(SystemMessageHandler.java:27)
12-05 01:51:25.702: W/System.err(2535):     at android.os.Handler.dispatchMessage(Handler.java:102)
12-05 01:51:25.702: W/System.err(2535):     at android.os.Looper.loop(Looper.java:136)
12-05 01:51:25.712: W/System.err(2535):     at android.app.ActivityThread.main(ActivityThread.java:5017)
12-05 01:51:25.712: W/System.err(2535):     at java.lang.reflect.Method.invokeNative(Native Method)
12-05 01:51:25.712: W/System.err(2535):     at java.lang.reflect.Method.invoke(Method.java:515)
12-05 01:51:25.712: W/System.err(2535):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
12-05 01:51:25.712: W/System.err(2535):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
12-05 01:51:25.712: W/System.err(2535):     at dalvik.system.NativeStart.main(Native Method)
12-05 01:51:25.772: A/libc(2535): Fatal signal 6 (SIGABRT) at 0x000009e7 (code=-6), thread 2535 (dhive.tabsswipe)
public class ActivitySwitcher {

    private final static int DURATION = 300;
    private final static float DEPTH = 400.0f;

    /* ----------------------------------------------- */

    public interface AnimationFinishedListener {
        /**
         * Called when the animation is finished.
         */
        public void onAnimationFinished();
    }

    /* ----------------------------------------------- */

    public static void animationIn(View container, WindowManager windowManager) {
        animationIn(container, windowManager, null);
    }

    public static void animationIn(View container, WindowManager windowManager,
            AnimationFinishedListener listener) {
        apply3DRotation(90, 0, false, container, windowManager, listener);
    }

    public static void animationOut(View container, WindowManager windowManager) {
        animationOut(container, windowManager, null);
    }

    public static void animationOut(View container,
            WindowManager windowManager, AnimationFinishedListener listener) {
        apply3DRotation(0, -90, true, container, windowManager, listener); ----> 50th line
    }

    /* ----------------------------------------------- */

    private static void apply3DRotation(float fromDegree, float toDegree,
            boolean reverse, View container, WindowManager windowManager,
            final AnimationFinishedListener listener) {
        Display display = windowManager.getDefaultDisplay();
        final float centerX = display.getWidth() / 2.0f;
        final float centerY = display.getHeight() / 2.0f;

        final Rotate3dAnimation a = new Rotate3dAnimation(fromDegree, toDegree,
                centerX, centerY, DEPTH, reverse);
        a.reset();
        a.setDuration(DURATION);
        a.setFillAfter(true);
        a.setInterpolator(new AccelerateInterpolator());
        if (listener != null) {
            a.setAnimationListener(new Animation.AnimationListener() {
                @Override
                public void onAnimationStart(Animation animation) {
                }

                @Override
                public void onAnimationRepeat(Animation animation) {
                }

                @Override
                public void onAnimationEnd(Animation animation) {
                    listener.onAnimationFinished();
                }
            });
        }
        container.clearAnimation(); --->84th line error
        container.startAnimation(a);  

    }
}  
MainActivity.java:(已编辑)

我无法解决此问题。任何人都可以帮助我解决此问题。谢谢。

第84行:

`container` must be null
因此,在第50行:

`container` must be null

因此,看起来
shouldOverrideUrlLoading
中的
getActivity().findViewById(R.id.container)
返回null。你检查过它的价值吗

对于您的id
container
所代表的内容,错误出现在方法
apply3DRotation
的第84行。如果您可以突出显示该行,人们将更容易帮助您。@NeilTownsend已在代码中突出显示该行,请再次阅读问题n。我认为您的容器在apply3DRotation上为空。@PiyushGupta请查看我编辑的帖子。我发现了出现空指针异常的原因。因为在MainActivity中,在将意图传递给另一个活动时,我为意图使用了一个断点。但是我没有在Logcat中看到这个意图检查。你能告诉我如何将意图中的内容传递给另一个活动吗?似乎ActivitySwitcher类也不会在意图的帮助下传递给另一个活动。这就是为什么容器中会出现空指针异常