从tabhost删除标签导致应用程序崩溃
问题描述:
我需要能够关闭TabHost中的选项卡为我正在处理的Android应用程序。我目前正在调用这个代码。从tabhost删除标签导致应用程序崩溃
tabHost.getTabWidget().removeViewAt(toDelete);
Where toDelete是调用删除方法的选项卡的索引。它看起来像代码删除选项卡,从分裂的第二秒,我可以看到它在崩溃之前。我在考虑另一种移除方法,我需要在某处调用,因为它在尝试绘制已删除的选项卡时似乎崩溃。我也试过
tabHost.removeViewAt(toDelete);
但它崩溃,因为它没有在toDelete,因为(我认为)预计视图,它只是包含的标签窗口小部件,而不是实际的标签。
这里是我的崩溃日志
04-04 16:05:53.149: E/AndroidRuntime(7885): FATAL EXCEPTION: main
04-04 16:05:53.149: E/AndroidRuntime(7885): java.lang.NullPointerException
04-04 16:05:53.149: E/AndroidRuntime(7885): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2495)
04-04 16:05:53.149: E/AndroidRuntime(7885): at android.widget.TabWidget.dispatchDraw(TabWidget.java:323)
04-04 16:05:53.149: E/AndroidRuntime(7885): at android.view.ViewGroup.drawChild(ViewGroup.java:2885)
04-04 16:05:53.149: E/AndroidRuntime(7885): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489)
04-04 16:05:53.149: E/AndroidRuntime(7885): at android.view.ViewGroup.drawChild(ViewGroup.java:2885)
04-04 16:05:53.149: E/AndroidRuntime(7885): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489)
04-04 16:05:53.149: E/AndroidRuntime(7885): at android.view.ViewGroup.drawChild(ViewGroup.java:2885)
04-04 16:05:53.149: E/AndroidRuntime(7885): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489)
04-04 16:05:53.149: E/AndroidRuntime(7885): at android.view.ViewGroup.drawChild(ViewGroup.java:2885)
04-04 16:05:53.149: E/AndroidRuntime(7885): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489)
04-04 16:05:53.149: E/AndroidRuntime(7885): at android.view.ViewGroup.drawChild(ViewGroup.java:2885)
04-04 16:05:53.149: E/AndroidRuntime(7885): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489)
04-04 16:05:53.149: E/AndroidRuntime(7885): at android.view.View.draw(View.java:10981)
04-04 16:05:53.149: E/AndroidRuntime(7885): at android.widget.FrameLayout.draw(FrameLayout.java:450)
04-04 16:05:53.149: E/AndroidRuntime(7885): at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2126)
04-04 16:05:53.149: E/AndroidRuntime(7885): at android.view.ViewRootImpl.draw(ViewRootImpl.java:2026)
04-04 16:05:53.149: E/AndroidRuntime(7885): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1634)
04-04 16:05:53.149: E/AndroidRuntime(7885): at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442)
04-04 16:05:53.149: E/AndroidRuntime(7885): at android.os.Handler.dispatchMessage(Handler.java:99)
04-04 16:05:53.149: E/AndroidRuntime(7885): at android.os.Looper.loop(Looper.java:137)
04-04 16:05:53.149: E/AndroidRuntime(7885): at android.app.ActivityThread.main(ActivityThread.java:4424)
04-04 16:05:53.149: E/AndroidRuntime(7885): at java.lang.reflect.Method.invokeNative(Native Method)
04-04 16:05:53.149: E/AndroidRuntime(7885): at java.lang.reflect.Method.invoke(Method.java:511)
04-04 16:05:53.149: E/AndroidRuntime(7885): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
04-04 16:05:53.149: E/AndroidRuntime(7885): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
04-04 16:05:53.149: E/AndroidRuntime(7885): at dalvik.system.NativeStart.main(Native Method)
上我应该叫什么其他方法,任何想法?还是我走下完全错误的道路?
编辑:我只是试图打开5个选项卡,并关闭第二个。它一开始并没有崩溃,但确实有一些非常奇怪的行为。当我点击一个标签时,它会显示下一个突出显示的内容,但会显示正确的标签,直到我点击应用崩溃时的最后一个标签。一些屏幕截图,以帮助描述我的问题。
当我
当我点击选项卡特定歌曲关闭标签
之前关闭选项卡之前单击歌曲标签当我关闭当前程序后,点击歌曲标签标签。显示正确的内容,但选择了错误的选项卡外观。
答
tabHost.getTabWidget().removeView(tabHost.getTabWidget().getChildTabViewAt(index));
我用这种方法删除它,您可以使用方法
答
尝试调用tabs.getTabWidget().removeView
之前,你需要展现另一个选项卡,tabs.setCurrentTab(0)
;