(Please ignore the 'package com.test.fragtest' line. I changed that to paste it up here and just realised the actual packagename is in the stack trace anyway)
On May 2, 5:50 pm, Stephen <stephen.wil...@gmail.com> wrote: > Thanks for the quick response Dianne. Please find below the stack > trace, the fragment class' code and the layout XML. I've tried using > either the default tabhost ID (android.R.id.tabhost) or an @+ ID. > Both result in the NullPointerException. > > I'm sure it's a schoolboy error somewhere but if you (or anyone else) > can help I'd much appreciate it. > > Stephen > > -= Stack Trace =- > > 05-02 17:18:43.193: ERROR/AndroidRuntime(2446): FATAL EXCEPTION: main > 05-02 17:18:43.193: ERROR/AndroidRuntime(2446): > java.lang.NullPointerException > 05-02 17:18:43.193: ERROR/AndroidRuntime(2446): at > android.widget.TabHost$ViewIdContentStrategy.<init>(TabHost.java:615) > 05-02 17:18:43.193: ERROR/AndroidRuntime(2446): at > android.widget.TabHost$ViewIdContentStrategy.<init>(TabHost.java:610) > 05-02 17:18:43.193: ERROR/AndroidRuntime(2446): at > android.widget.TabHost$TabSpec.setContent(TabHost.java:464) > 05-02 17:18:43.193: ERROR/AndroidRuntime(2446): at > uk.co.esstec.android.fragmenttabtest.ContentPaneFragment.onCreateView(Conte > ntPaneFragment.java: > 20) > 05-02 17:18:43.193: ERROR/AndroidRuntime(2446): at > android.app.FragmentManagerImpl.moveToState(FragmentManager.java:730) > 05-02 17:18:43.193: ERROR/AndroidRuntime(2446): at > android.app.FragmentManagerImpl.moveToState(FragmentManager.java:921) > 05-02 17:18:43.193: ERROR/AndroidRuntime(2446): at > android.app.BackStackRecord.run(BackStackRecord.java:578) > 05-02 17:18:43.193: ERROR/AndroidRuntime(2446): at > android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java: > 1221) > 05-02 17:18:43.193: ERROR/AndroidRuntime(2446): at > android.app.FragmentManagerImpl$1.run(FragmentManager.java:375) > 05-02 17:18:43.193: ERROR/AndroidRuntime(2446): at > android.os.Handler.handleCallback(Handler.java:587) > 05-02 17:18:43.193: ERROR/AndroidRuntime(2446): at > android.os.Handler.dispatchMessage(Handler.java:92) > 05-02 17:18:43.193: ERROR/AndroidRuntime(2446): at > android.os.Looper.loop(Looper.java:126) > 05-02 17:18:43.193: ERROR/AndroidRuntime(2446): at > android.app.ActivityThread.main(ActivityThread.java:3997) > 05-02 17:18:43.193: ERROR/AndroidRuntime(2446): at > java.lang.reflect.Method.invokeNative(Native Method) > 05-02 17:18:43.193: ERROR/AndroidRuntime(2446): at > java.lang.reflect.Method.invoke(Method.java:491) > 05-02 17:18:43.193: ERROR/AndroidRuntime(2446): at > com.android.internal.os.ZygoteInit > $MethodAndArgsCaller.run(ZygoteInit.java:841) > 05-02 17:18:43.193: ERROR/AndroidRuntime(2446): at > com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) > 05-02 17:18:43.193: ERROR/AndroidRuntime(2446): at > dalvik.system.NativeStart.main(Native Method) > > -= Layout XML =- > > <?xml version="1.0" encoding="utf-8"?> > <TabHost xmlns:android="http://schemas.android.com/apk/res/android" > android:id="@+id/testtabhost1" android:layout_width="fill_parent" > android:layout_height="fill_parent"> > <LinearLayout android:orientation="vertical" > android:layout_width="fill_parent" > android:layout_height="fill_parent"> > <TabWidget android:id="@android:id/tabs" > android:layout_width="fill_parent" > android:layout_height="wrap_content" /> > <FrameLayout android:id="@android:id/tabcontent" > android:layout_width="fill_parent" > android:layout_height="fill_parent"> > <TextView android:id="@+id/textview1" > android:layout_width="fill_parent" > android:layout_height="fill_parent" > android:text="this is a tab" / > > <TextView android:id="@+id/textview2" > android:layout_width="fill_parent" > android:layout_height="fill_parent" > android:text="this is another > tab" /> > <TextView android:id="@+id/textview3" > android:layout_width="fill_parent" > android:layout_height="fill_parent" > android:text="this is a third > tab" /> > </FrameLayout> > </LinearLayout> > </TabHost> > > -= Fragment Class Code =- > > package com.test.fragtest; > > import android.app.Fragment; > import android.os.Bundle; > import android.view.LayoutInflater; > import android.view.View; > import android.view.ViewGroup; > import android.widget.TabHost; > > public class ContentPaneFragment extends Fragment { > > @Override > public View onCreateView(LayoutInflater inflater, ViewGroup > container, > Bundle savedInstanceState) { > super.onCreateView(inflater, container, savedInstanceState); > > View v = inflater.inflate(R.layout.content_pane, container, > false); > > TabHost mTabHost = (TabHost) > v.findViewById(R.id.testtabhost1); > > > mTabHost.addTab(mTabHost.newTabSpec("tab_test1").setIndicator("TAB > 1").setContent(R.id.textview1)); > > mTabHost.addTab(mTabHost.newTabSpec("tab_test2").setIndicator("TAB > 2").setContent(R.id.textview2)); > > mTabHost.addTab(mTabHost.newTabSpec("tab_test3").setIndicator("TAB > 3").setContent(R.id.textview3)); > > mTabHost.setCurrentTab(0); > > return v; > } > > } > > On May 2, 2:36 pm, Dianne Hackborn <hack...@android.com> wrote: > > > > > > > > > You can certainly use a TabHost inside of a fragment. TabHost is just a > > view; it doesn't know anything about whatever is outside the view hierarchy > > it is running in. > > > You haven't give the stack crawl of the exception, so it is hard to help > > further. > > > On Mon, May 2, 2011 at 7:30 AM, Stephen <stephen.wil...@gmail.com> wrote: > > > Having read the post here:http://goo.gl/6xYBD(Android3.0-Tabhost) > > > and based on the lack of a TabFragment it appears that the way to do > > > things in 3.0 (and I guess above) is to use tabs in the action bar. > > > > My issue is that I'm writing an app that has the fairly standard > > > 'listview on left, content on right' layout, and I'd like my content > > > on the right to have tabs. I know I can change the right fragment > > > using the tabs in the action bar, but from a UI perspective, it just > > > looks wrong. The tabs in the action bar look like they preside over > > > the *whole* application as they are above the left ListView as well. > > > For example, in the HoneycombGallery app, the Android/Balloons/ > > > Bikes.... tabs change both the ListView fragment and the content > > > fragment. Mine would only change which aspect of the content you're > > > looking at. > > > > I tried inflating a TabHost into the fragment but I get > > > NullPointerExceptions when I run TabSpec.setContent (that may be me > > > doing something wrong - I'll have another run at debugging it but > > > figured I'd ask this anyway). > > > > I hope that all makes sense. If I need to explain better please let > > > me know. I'm very interested in how others are solving this problem > > > since I think the 'listview | content' style is quite common. At the > > > moment, my alternatives are either to fake tabs with buttons > > > (something I'd rather avoid) or to present menu buttons in the action > > > bar to change what you're looking at. > > > > Thank you, > > > > Stephen > > > > -- > > > You received this message because you are subscribed to the Google > > > Groups "Android Developers" group. > > > To post to this group, send email to android-developers@googlegroups.com > > > To unsubscribe from this group, send email to > > > android-developers+unsubscr...@googlegroups.com > > > For more options, visit this group at > > >http://groups.google.com/group/android-developers?hl=en > > > -- > > Dianne Hackborn > > Android framework engineer > > hack...@android.com > > > Note: please don't send private questions to me, as I don't have time to > > provide private support, and so won't reply to such e-mails. All such > > questions should be posted on public forums, where I and others can see and > > answer them. -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en