Xamarin - 更新viewPager中的当前选项卡片段

时间:2017-06-24 14:26:48

标签: android android-fragments xamarin.android

我在viewPager中有3个片段。每个片段类都有自己的方法来更新片段的视图(例如,在TabFragment1.cs中):

public void UpdateContent(View v)
    {

        // Sample values to read
        string locationCode = "528454";

        // Mapping views
        TextView tv_currentConditions = v.FindViewById<TextView>(Resource.Id.currentConditions);
        TextView tv_currentTemperature = v.FindViewById<TextView>(Resource.Id.currentTemperature);
        TextView tv_currentRealFeel = v.FindViewById<TextView>(Resource.Id.currentRealFeel);
        TextView tv_minMaxTemperature = v.FindViewById<TextView>(Resource.Id.minMaxTemperature);

        // Update view from database
        tv_currentConditions.Text = Sql.ReadValue(locationCode,"currentConditions");
        tv_currentTemperature.Text = Sql.ReadValue(locationCode, "currentTemperature") + "°C";
        tv_currentRealFeel.Text = GetString(Resource.String.feelLike) + " " + Sql.ReadValue(locationCode, "currentRealFeel") + "°C";
        tv_minMaxTemperature.Text = Sql.ReadValue(locationCode, "minTemperature") + " " + Sql.ReadValue(locationCode, "maxTemperature") + "°C";

    }

挑战在于:定义现在选择哪个片段选项卡,并从活动片段类启动方法。

UPD:我知道,如何获取当前标签号:

    public int currentTabNum;

    void setupViewPager(ViewPager viewPager)
    {
        var adapter = new Adapter(SupportFragmentManager);
        adapter.AddFragment(new tabFragment1(), GetString(Resource.String.tab1));
        adapter.AddFragment(new tabFragment2(), GetString(Resource.String.tab2));
        adapter.AddFragment(new tabFragment3(), GetString(Resource.String.tab3));
        viewPager.Adapter = adapter;
        viewPager.Adapter.NotifyDataSetChanged();
        viewPager.PageSelected += (object sender, ViewPager.PageSelectedEventArgs e) => {
            //Snackbar.Make(drawerLayout, e.Position.ToString(), Snackbar.LengthLong).Show();
            currentTabNum = e.Position;
        };
    }

    class Adapter: Android.Support.V4.App.FragmentPagerAdapter
    {
        List<Android.Support.V4.App.Fragment> fragments = new List<Android.Support.V4.App.Fragment>();
        List<string> fragmentTitles = new List<string>();
        public Adapter(Android.Support.V4.App.FragmentManager fm) : base(fm) { }
        public void AddFragment(Android.Support.V4.App.Fragment fragment, String title)
        {
            fragments.Add(fragment);
            fragmentTitles.Add(title);
        }
        public override Android.Support.V4.App.Fragment GetItem(int position)
        {
            return fragments[position];
        }
        public override int Count
        {
            get
            {
                return fragments.Count;
            }
        }
        public override Java.Lang.ICharSequence GetPageTitleFormatted(int position)
        {
            return new Java.Lang.String(fragmentTitles[position]);
        }
    }

所以,问题是:如何从intentService从onDesroy()方法发送一个命令到mainActivity来更新当前标签?

0 个答案:

没有答案