Android 运行时出现空指针异常
我正在尝试实现3d转换效果。最终我在0x000009e7(代码=-6)处得到了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.
空指针异常和致命信号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。你检查过它的价值吗 对于您的idcontainer
所代表的内容,错误出现在方法apply3DRotation
的第84行。如果您可以突出显示该行,人们将更容易帮助您。@NeilTownsend已在代码中突出显示该行,请再次阅读问题n。我认为您的容器在apply3DRotation上为空。@PiyushGupta请查看我编辑的帖子。我发现了出现空指针异常的原因。因为在MainActivity中,在将意图传递给另一个活动时,我为意图使用了一个断点。但是我没有在Logcat中看到这个意图检查。你能告诉我如何将意图中的内容传递给另一个活动吗?似乎ActivitySwitcher类也不会在意图的帮助下传递给另一个活动。这就是为什么容器中会出现空指针异常