[mono-android] TabView not responding as it should
Tomasz Cielecki
tomasz at ostebaronen.dk
Mon Feb 27 12:20:25 UTC 2012
It is because they Views were not destroyed. So OnCreate is not called
again. Take a look at the Activity life cycle:
http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle
This will explain it to you.
On Fri, Feb 24, 2012 at 1:59 AM, Paul Johnson
<paul at all-the-johnsons.co.uk> wrote:
> Hi,
>
> I have a tabview app in development which on the face of it looks to work,
> but it isn't.
>
> The event for changing the tab works, but the new view isn't showing. If I
> click on another tab, that fires. If I go back to the first tab, nothing
> fires. The code below explains it...
>
> [Activity]
> public class HomeTab : Activity
> {
> protected override void OnCreate(Bundle savedInstanceState)
> {
> base.OnCreate(savedInstanceState);
> Console.WriteLine("in home");
> SetContentView(Resource.Layout.main_original);
> }
> }
> [Activity]
> public class CalendarTab : Activity
> {
> protected override void OnCreate(Bundle savedInstanceState)
> {
> base.OnCreate(savedInstanceState);
> Console.WriteLine("in calendar");
> SetContentView(Resource.Layout.five_buttons);
> }
> }
> //
> [Activity(Label = "OQHRA", MainLauncher = true,
> Theme="@android:style/Theme.NoTitleBar", Icon = "@drawable/icon")]
> public class Activity1 : TabActivity
> {
> public int screenNo = -1; // quick hack
> protected override void OnCreate(Bundle bundle)
> {
> base.OnCreate(bundle);
> SetContentView(Resource.Layout.main_original);
> ListView listView = FindViewById<ListView>(Resource.Id.listView);
> string[] falco =
> Resources.GetStringArray(Resource.Array.frontpage);
> listView.Adapter = new ArrayAdapter<string>(this,
> Resource.Layout.listview_layout, falco);
> listView.ItemClick +=new
> EventHandler<ItemEventArgs>(listView_ItemClick);
> ImageView image = FindViewById<ImageView>(Resource.Id.imgBack);
> image.Focusable = true;
> image.Clickable = true;
> image.Click += image_Click;
> TabHost.TabSpec spec;
> Intent intent;
> intent = new Intent(this, typeof(HomeTab));
> intent.AddFlags(ActivityFlags.NewTask);
> spec = TabHost.NewTabSpec("tabHome");
> spec.SetIndicator("Home",
> Resources.GetDrawable(Resource.Drawable.ic_tabs_home));
> spec.SetContent(intent);
> TabHost.AddTab(spec);
> intent = new Intent(this, typeof(CalendarTab));
> intent.AddFlags(ActivityFlags.NewTask);
> spec = TabHost.NewTabSpec("tabCalendar");
> spec.SetIndicator("Calendar",
> Resources.GetDrawable(Resource.Drawable.ic_tabs_cal));
> spec.SetContent(intent);
> TabHost.AddTab(spec);
> intent = new Intent(this, typeof(RaceTab));
> intent.AddFlags(ActivityFlags.NewTask);
> spec = TabHost.NewTabSpec("tabRaceInfo");
> spec.SetIndicator("Race Info",
> Resources.GetDrawable(Resource.Drawable.ic_tabs_race));
> spec.SetContent(intent);
> TabHost.AddTab(spec);
> intent = new Intent(this, typeof(NewsTab));
> intent.AddFlags(ActivityFlags.NewTask);
> spec = TabHost.NewTabSpec("tabNews");
> spec.SetIndicator("News",
> Resources.GetDrawable(Resource.Drawable.ic_tabs_news));
> spec.SetContent(intent);
> TabHost.AddTab(spec);
> TabHost.CurrentTab = 0;
> }
>
> When you click a tab, it puts in the console which tab has been pressed - if
> I click on the first tab, home is printed, second gives calendar and so on.
> Go to any tab and back to home, nothing is printed.
>
> Any ideas why the contentview isn't showing or why the event only fires
> once?
>
> Thanks
>
> Paul
>
>
> _______________________________________________
> Monodroid mailing list
> Monodroid at lists.ximian.com
>
> UNSUBSCRIBE INFORMATION:
> http://lists.ximian.com/mailman/listinfo/monodroid
--
Med Venlig Hilsen / With Best Regards
Tomasz Cielecki
http://ostebaronen.dk
More information about the Monodroid
mailing list