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

Android Xamarin-更新viewPager中的当前选项卡片段,android,android-fragments,xamarin.android,Android,Android Fragments,Xamarin.android,我在一个viewPager中有3个片段。每个片段类都有自己的方法来更新片段的视图(例如,在TabFragment1.cs中): public void UpdateContent(视图v) { //要读取的示例值 字符串位置代码=“528454”; //映射视图 TextView tv_currentConditions=v.FindViewById(Resource.Id.currentConditions); TextView tv_currentTemperature=v.findview

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

public void UpdateContent(视图v)
{
//要读取的示例值
字符串位置代码=“528454”;
//映射视图
TextView tv_currentConditions=v.FindViewById(Resource.Id.currentConditions);
TextView tv_currentTemperature=v.findviewbyd(Resource.Id.currentTemperature);
TextView tv\u currentRealFeel=v.FindViewById(Resource.Id.currentRealFeel);
TextView tv_minMaxTemperature=v.findviewbyd(Resource.Id.minMaxTemperature);
//从数据库更新视图
tv_currentConditions.Text=Sql.ReadValue(位置代码,“currentConditions”);
tv_currentTemperature.Text=Sql.ReadValue(位置代码,“currentTemperature”)+“摄氏度”;
tv_currentRealFeel.Text=GetString(Resource.String.feelLike)+“”+Sql.ReadValue(locationCode,“currentRealFeel”)+“°C”;
tv_minMaxTemperature.Text=Sql.ReadValue(位置代码,“MintTemperature”)+“”+Sql.ReadValue(位置代码,“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]);
        }
    }
public int currentTabNum;
无效设置ViewPager(ViewPager ViewPager)
{
var适配器=新适配器(SupportFragmentManager);
AddFragment(新的tabFragment1(),GetString(Resource.String.tab1));
AddFragment(新的tabFragment2(),GetString(Resource.String.tab2));
AddFragment(新的tabFragment3(),GetString(Resource.String.tab3));
viewPager.Adapter=适配器;
viewPager.Adapter.NotifyDataSetChanged();
viewPager.PageSelected+=(对象发送者,viewPager.PageSelectedEventArgs e)=>{
//Snackbar.Make(抽屉布局,例如Position.ToString(),Snackbar.LengthLong.Show();
currentTabNum=e.位置;
};
}
类适配器:Android.Support.V4.App.FragmentPagerAdapter
{
列表片段=新列表();
List fragmentTitles=新列表();
公共适配器(Android.Support.V4.App.FragmentManager fm):基本(fm){}
public void AddFragment(Android.Support.V4.App.Fragment片段,字符串标题)
{
片段。添加(片段);
碎片标题。添加(标题);
}
public override Android.Support.V4.App.Fragment GetItem(int位置)
{
返回碎片[位置];
}
公共覆盖整数计数
{
得到
{
返回碎片。计数;
}
}
public override Java.Lang.ICharSequence GetPageTitleFormatted(int位置)
{
返回新的Java.Lang.String(fragmentTitles[position]);
}
}

所以,问题是:如何从intentService的onDesroy()方法发送命令到mainActivity以更新当前选项卡?

什么是“从intentService的onDesroy()方法发送”?York Shen,我的活动向intentService发送了几个意图。例如,“将城市1的天气放入数据库”、“将城市2的天气放入数据库”等等。在intent服务完成所有作业后,它调用OnDestroy()并停止。我希望intent服务告诉活动使用新数据更新当前选项卡片段的视图。因此,我发现了一个活动如何定义当前选定的选项卡片段,并为每个选项卡片段提供了一个更新其视图的方法。因此,我唯一需要的是让Activity立即知道intent service已经完成了工作。当您的IntentService完成所有作业时,您可以向Activity发送广播,一旦Activity收到消息,您就可以更新您的用户界面。
    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]);
        }
    }