5

Ich benutze Xamarin und dies ist mein zweiter Versuch, einen ViewPager zum Laufen zu bringen. Ich habe eine Anwendung von Grund auf mit Bezug auf diesen Weblink erstellt: http://looksok.wordpress.com/2013/10/26/android-support-v4-viewpager-tutorial-including-source-code/ViewPager mit FragmentPagerAdapter wird nicht angezeigt

Die Anwendung kompiliert, entfaltet, aber nur ein leerer, schwarzer Bildschirm angezeigt wird.

Hier ist mein vollständiger Code:

MainActivity.cs

using System; 
using Android.App; 
using Android.Content; 
using Android.Runtime; 
using Android.Views; 
using Android.Widget; 
using Android.OS; 
using Android.Support.V4.App; 
using Android.Support.V4.View; 

namespace AndroidViewPagerTutorial 
{ 
    [Activity (Label = "AndroidViewPagerTutorial", MainLauncher = true)] 
    public class MainActivity : FragmentActivity 
    { 
     protected override void OnCreate (Bundle bundle) 
     { 
      base.OnCreate (bundle); 

      SetContentView (Resource.Layout.activity_main); 

      MyPagerAdapter pageAdapter = new MyPagerAdapter(SupportFragmentManager); 
      var pager = FindViewById<ViewPager>(Resource.Id.myViewPager); 
      pager.Adapter = pageAdapter; 

      pager.SetCurrentItem (0, true); 
     } 
    } 
} 

MyPagerAdapter.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using Android.App; 
using Android.Content; 
using Android.OS; 
using Android.Runtime; 
using Android.Views; 
using Android.Widget; 
using Android.Support.V4.App; 

namespace AndroidViewPagerTutorial 
{ 
    public class MyPagerAdapter : FragmentPagerAdapter { 

     private List<Android.Support.V4.App.Fragment> fragments; 
     int fragmentCount; 

     public MyPagerAdapter(Android.Support.V4.App.FragmentManager fm) : base(fm) 
     { 
      this.fragments = new List<Android.Support.V4.App.Fragment>(); 
      fragments.Add(new FragmentOrange()); 
      fragments.Add(new FragmentGreen()); 
      fragments.Add(new FragmentRed()); 

      fragmentCount = fragments.Count; 
     } 

     #region implemented abstract members of PagerAdapter 

     public override int Count 
     { 
      get 
      { 
       return fragmentCount; 
      } 
     } 

     #endregion 

     #region implemented abstract members of FragmentPagerAdapter 

     public override Android.Support.V4.App.Fragment GetItem (int position) 
     { 
      return fragments[position]; 
     } 

     #endregion 
    } 
} 

FragmentOrange.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using Android.App; 
using Android.Content; 
using Android.OS; 
using Android.Runtime; 
using Android.Util; 
using Android.Views; 
using Android.Widget; 

namespace AndroidViewPagerTutorial 
{ 
    public class FragmentOrange : Android.Support.V4.App.Fragment 
    { 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

      View view = inflater.Inflate(Resource.Layout.fragment_orange, container, false); 
      return view; 
     } 
    } 
} 

fragment_green.axml

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using Android.App; 
using Android.Content; 
using Android.OS; 
using Android.Runtime; 
using Android.Util; 
using Android.Views; 
using Android.Widget; 

namespace AndroidViewPagerTutorial 
{ 
    public class FragmentGreen : Android.Support.V4.App.Fragment 
    { 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

      View view = inflater.Inflate(Resource.Layout.fragment_green, container, false); 
      return view; 
     } 
    } 
} 

fragment_red.axml

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using Android.App; 
using Android.Content; 
using Android.OS; 
using Android.Runtime; 
using Android.Util; 
using Android.Views; 
using Android.Widget; 

namespace AndroidViewPagerTutorial 
{ 
    public class FragmentRed : Android.Support.V4.App.Fragment 
    { 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

      View view = inflater.Inflate(Resource.Layout.fragment_red, container, false); 
      return view; 
     } 
    } 
} 

activity_main.axml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity"> 
    <android.support.v4.view.ViewPager 
     android:id="@+id/myViewPager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 
</RelativeLayout> 

fragment_orange.axml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" /> 

fragment_green.axml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@android:color/holo_green_dark" /> 

fragment_red.axml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@android:color/holo_red_light" /> 

Kann ich bitte etwas Hilfe diese Arbeit zu bekommen?

Vielen Dank im Voraus

Antwort

3

Ich habe den Code arbeiten habe.

Dies ist, was für jedes Fragment geändert werden mußte:

public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
+1

Ich bin mit dem gleichen Problem. Was ist die Lösung mit der OnCreateView-Methode? Deine Antwort fehlt. – Jeremy

+0

@ Jeremy Ich denke, der Unterschied ist das Schlüsselwort 'override' –