I'm trying to write a simple example using a tabbed interface in the actionbar. 
 When a user clicks on a tab, a new fragment will load in the main screen of 
the device.  When I click the 2nd tab, I am getting an error.  in DDMS, I get 
an error shown below.  I'm not sure if the error is due to frag1, frag2, or 
something else.  Any suggestion are appreciated.
error:

11-21 10:55:40.220: E/AndroidRuntime(3911): 
java.lang.IllegalStateException: The specified child already has a 
parent. You must call removeView() on the child's parent first.

code:
    [Activity(Label = "HCTabbedInterface", MainLauncher = true, Icon = 
"@drawable/icon")]
    public class Activity1 : Activity, ActionBar.ITabListener
    {
        int count = 1;
        private ActionBar ab;
        private View mActionBarView;
        
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.Main);

            // Get our button from the layout resource,
            // and attach an event to it
            ab = this.ActionBar;
            ab.AddTab(ab.NewTab().SetText(tab1).SetTabListener(this));
            ab.AddTab(ab.NewTab().SetText(tab2).SetTabListener(this));

            mActionBarView = LayoutInflater.Inflate(
                Resource.Layout.ab, null);
            ab.CustomView = mActionBarView;
            ab.DisplayOptions = ActionBarDisplayOptions.ShowCustom | 
ActionBarDisplayOptions.UseLogo;
            ab.NavigationMode = ActionBarNavigationMode.Tabs;
            ab.SetDisplayShowHomeEnabled(true);
        }

        public void OnTabReselected(ActionBar.Tab tab, FragmentTransaction ft)
        {
        }

        private const string tab1 = "Tab 1";
        private const string tab2 = "Tab 2";
        private Frag1 f1;
        private Frag2 f2;
        public void OnTabSelected(ActionBar.Tab tab, FragmentTransaction ft)
        {
            try
            {
                switch (tab.Text)
                {
                    case tab1:
                        if (f1 == null)
                        {
                            f1 = 
FragmentManager.FindFragmentById<Frag1>(Resource.Id.fg);
                        }
                        else
                        {
                            ft.Replace(Resource.Id.fg, f1);
                        }
                        break;
                    case tab2:
                        if (f2 == null)
                        {
                            f2 = (Frag2)Fragment.Instantiate(this, (new 
Frag2()).Class.Name);
                        }
                        ft.Replace(Resource.Id.fg, f2);
                        break;
                }
            }
            catch (System.Exception sysExc)
            {
                Android.Util.Log.Error("tab", String.Format("Error info: {0}", 
sysExc.Message));
            }
        }

        public void OnTabUnselected(ActionBar.Tab tab, FragmentTransaction ft)
        {
        }
    }


                                          
_______________________________________________
Monodroid mailing list
Monodroid@lists.ximian.com

UNSUBSCRIBE INFORMATION:
http://lists.ximian.com/mailman/listinfo/monodroid

Reply via email to