2017-11-18 9 views
1

私はXamarinに関しては新しく、何を試しても解決できない問題に遭遇しました。 これは私がしたエラーメッセージです暗黙的andriod.support.V4.App.FragmentXamarin、フラグメントをV4.Appに変換できません。フラグメント

」に

を型 'Fragment1' を変換することはできません」なってきてこれはこれは私のpagerAdapterコードである私のMainActivity

public class MainActivity : AppCompatActivity 
{ 
    int count = 1; 
    PagerSlidingTabStrip _tabs; 
    ViewPager _pager; 

    protected override void OnCreate(Bundle savedInstanceState) 
    { 
     base.OnCreate(savedInstanceState); 

     SetContentView(Resource.Layout.Main); 

     _pager = FindViewById<ViewPager>(Resource.Id.pager); 
     _tabs = FindViewById<PagerSlidingTabStrip>(Resource.Id.tabs); 
     _pager.PageMargin = (int)TypedValue.ApplyDimension(ComplexUnitType.Dip, 4, Resources.DisplayMetrics); 
     _pager.CurrentItem = 0; 

     string[] titles = new string[] 
      { 
       "Fragment1", 
       "Fragment2" 
      }; 

     var adapter = new PagerAdapter(SupportFragmentManager, titles); 
     _pager.Adapter = adapter; 
     _pager.OffscreenPageLimit = titles.Length; 
     _tabs.SetViewPager(_pager); 
    } 
} 

ある

public class PagerAdapter:FragmentPagerAdapter 
{ 
    private string[] Titles; 

    public PagerAdapter(FragmentManager fm, string[] titles) 
     : base(fm) 
    { 
     Titles = titles; 
    } 

    public override ICharSequence GetPageTitleFormatted(int position) 
    { 

     return new Java.Lang.String(Titles[position]); 
    } 

    public override int Count 
    { 
     get { return Titles.Length; } 
    } 

    public override Fragment GetItem(int position) 
    { 
     switch (position) 
     { 
      case 0: 
       return new Fragment1(); 
      case 1: 
       return new Fragment2(); 
      case 2: 
      default: 
       return new Fragment1(); 
     } 
    } 
} 

そして、これが私のフラグメント

public class Fragment1 : Fragment 
{ 
    public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
    { 
     base.OnCreateView(inflater, container, savedInstanceState); 

     var view = inflater.Inflate(Resource.Layout.Fragment1Layout, null); 

     return view; 
    } 
} 

あるすべてのヘルプは、私はXamarinに慣れていないんだけど、私は最近の断片で多くのことを扱ってきたし、この問題に数回実行した

答えて

0

を高く評価しています。私が見つかりました。私はフラグメントを初期化していたときに、時には、それはandroid.app.Fragmentを使用していたの代わりに、あなたは(再びXamarinに精通していない)あなたのフラグメントを初期化どこでも、あなたはandroid.support.v4.app.Fragmentを使用してください、そうandroid.support.v4.app.Fragment

を使用しています。お役に立てれば!

+0

残念ながらそれでも問題は解決されませんが、あなたの返信のおかげでまだ – Mortality

+0

あなたはクラス宣言でそれを変更しようとしましたか?変更public class Fragment1:Fragment1 to:パブリッククラスFragment1:android.support.v4.app.Fragment? –

+0

それは最終的に働いた!数え切れないほどの時間を節約できて大変感謝しています。 – Mortality

0

このエラーは、Android.Support.V4.App.Fragmentではなく、Android.App.Fragmentから継承しているという意味です。

上記のソリューションを使用することもできますし、このクリーナー宣言using Fragment = Android.Support.V4.App.Fragment;を使用することもできます。 using文の前または後、名前空間宣言の直前に配置します。

+0

あなたの助けてくれてありがとう、これは美しくも機能します – Mortality

関連する問題