해외 포럼에서 tab을 지우는데에 clearAllTabs()를 쓴다고 나와있는데 코드에 입력하면 null pointer 오류가 나네요..
에러날 경우에 앞줄에다 tabHost.setCurrentTab(0);를 붙여주라고 하는데 이걸 붙여도 마찮가지네요.
오류내용입니다.
03-21 11:08:40.184: ERROR/AndroidRuntime(1525): Uncaught handler: thread main exiting due to uncaught exception
03-21 11:08:40.223: ERROR/AndroidRuntime(1525): java.lang.NullPointerException
03-21 11:08:40.223: ERROR/AndroidRuntime(1525): at android.widget.TabHost.dispatchWindowFocusChanged(TabHost.java:295)
03-21 11:08:40.223: ERROR/AndroidRuntime(1525): at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:661)
03-21 11:08:40.223: ERROR/AndroidRuntime(1525): at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:661)
03-21 11:08:40.223: ERROR/AndroidRuntime(1525): at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:661)
03-21 11:08:40.223: ERROR/AndroidRuntime(1525): at android.view.ViewRoot.handleMessage(ViewRoot.java:1819)
03-21 11:08:40.223: ERROR/AndroidRuntime(1525): at android.os.Handler.dispatchMessage(Handler.java:99)
03-21 11:08:40.223: ERROR/AndroidRuntime(1525): at android.os.Looper.loop(Looper.java:123)
03-21 11:08:40.223: ERROR/AndroidRuntime(1525): at android.app.ActivityThread.main(ActivityThread.java:4363)
03-21 11:08:40.223: ERROR/AndroidRuntime(1525): at java.lang.reflect.Method.invokeNative(Native Method)
03-21 11:08:40.223: ERROR/AndroidRuntime(1525): at java.lang.reflect.Method.invoke(Method.java:521)
03-21 11:08:40.223: ERROR/AndroidRuntime(1525): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
03-21 11:08:40.223: ERROR/AndroidRuntime(1525): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
03-21 11:08:40.223: ERROR/AndroidRuntime(1525): at dalvik.system.NativeStart.main(Native Method)
<추가>
소스 내용입니다.
(main.xml)
<?xml version="1.0" encoding="utf-8"?>
<TabHost
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost">
<LinearLayout
android:id="@+id/LinearLayout01"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TabWidget
android:id="@android:id/tabs"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</TabWidget>
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@android:id/tabcontent">
<LinearLayout
android:id="@+id/LinearLayout02"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</LinearLayout>
</FrameLayout>
</LinearLayout>
</TabHost>
(tabRe.java)
package my.tabRe;
import android.app.TabActivity;
import android.os.Bundle;
import android.widget.TabHost;
public class tabRe extends TabActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TabHost mTabHost = getTabHost();
mTabHost.setup();
mTabHost.addTab(mTabHost.newTabSpec("tab_test1")
.setIndicator("위젯")
.setContent(R.id.LinearLayout02)
);
mTabHost.addTab(mTabHost.newTabSpec("tab_test2")
.setIndicator("이미지뷰")
.setContent(R.id.LinearLayout02)
);
mTabHost.addTab(mTabHost.newTabSpec("tab_test3")
.setIndicator("테스트")
.setContent(R.id.LinearLayout02)
);
mTabHost.clearAllTabs();
/*mTabHost = getTabHost();
mTabHost.addTab(mTabHost.newTabSpec("tab_test4")
.setIndicator("테스트")
.setContent(R.id.LinearLayout01)
);*/
}
}
소스내용 추가했습니다.. xml 디자인에 문제가 있는걸까요? ㅠ xml 디자인할때 항상 tab컨트롤을 집어넣게 되면(tabhost, tabWidget) 디자인이 나와야될 화면에 NullPointerException:null 만 출력이 되네요... 이쪽이 문제였던건지.. 생긴지 얼마 안된 SDK라 원래 그런식으로 출력되는건가 하고 생각하고 있었는데ㅋ
아.. 저건 그냥 예제로 만든 내용입니다.. 제가 실제로 만들고 있는 어플의 LinearLayout안에는 여러가지 View componet들이 들어있습니다.
juniano님 말씀대로 FrameLayout안에 LinearLayout 없앤뒤에 View component를 넣어봤는데도(위의 예제에서 LinearLayout안에 view를 새로 넣어보기도 했습니다) clearAllTabs()을 부르면 에러가 나네요..;