我在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来更新当前标签?