私にとっては、mPagerAdapter.notifyDataSetChanged()の後にmPager.setCurrentItemを呼び出し、ポストされた実行可能ファイルとしてではなく、それを呼び出すことができました。ここ
は(MonoDroidに)例である:
public void UpdateDetialsView(string type)
{
string typeName4 = Java.Lang.Class.FromType(typeof(ParcelRecordComplaintDetailsView)).Name;
if (_fragments.Count > 3)
{
_fragments.RemoveAt(_fragments.Count - 1);
////////////////////////////////////////////////////////////
// Called here it wasn't working for me (Posted or not)
//_viewPager.Post(new Action(() => { _viewPager.SetCurrentItem(3, true); }));
}
_fragments.Add(Fragment.Instantiate(Activity, typeName4));
_pagerAdapter.NotifyDataSetChanged();
////////////////////////////////////////////////////////////
// Called here it works as expected
_viewPager.SetCurrentItem(3, true);
}
protected MyAdapter _pagerAdapter;
protected ViewPager _viewPager;
private List<Android.App.Fragment> _fragments;
と
public class MyAdapter : Android.Support.V13.App.FragmentStatePagerAdapter
{
private List<Fragment> _fragments;
public override Java.Lang.Object InstantiateItem(View p0, int p1)
{
return base.InstantiateItem(p0, p1);
}
public MyAdapter(Android.App.FragmentManager fm) : base(fm)
{
}
public MyAdapter(Android.App.FragmentManager fm, List<Android.App.Fragment> fragments) : base(fm)
{
_fragments = fragments;
}
public override int Count
{
//get { return FRAG_PAGES; }
get { return _fragments.Count; }
}
public override Android.App.Fragment GetItem(int p0)
{
return _fragments[p0];
}
public override float GetPageWidth(int p0)
{
//return base.GetPageWidth(p0);
return (float) (0.5f);
}
public override int GetItemPosition(Java.Lang.Object p0)
{
//return base.GetItemPosition(p0);
return PagerAdapter.PositionNone;
}
}
最初に、ビューページはサポートパッケージにのみ存在します。問題はあなたが直面している問題は何でしょうか? setCurrentItem(2、false)を実行すると、代わりに何が行われますか?少し具体的に質問を編集できますか? –
だから私はmPager.setCurrentItem(1、真)を置く。オブジェクトがビューページャーであるというヒントをユーザーに与えるためのポストランナブル(postrunnable)内にある。問題は、ポイントを殺すポストランナブルにアニメーションを入れてもアニメーションがないことです。私はこれを行うことができる別の方法はありますか? – MinceMan