ViewPager con FragmentPagerAdapter no se muestra
Estoy usando Xamarin y este es mi segundo intento de conseguir un ViewPager trabajando. He creado una aplicación desde cero con referencia a este enlace web: http://looksok.wordpress.com/2013/10/26/android-support-v4-viewpager-tutorial-including-source-code/
La aplicación compila, despliega, pero sólo se muestra una pantalla en blanco en negro.
- NullPointerException mientras muestra OptionsMenu
- ¿Dónde está la clave de firma de Android en el disco que crea Xamarin Studio?
- BluetoothAdapter ActionDiscoveryFinished
- Arrastrar y soltar en formas Xamarin
- Xamarin Forms Android Keyboard mueve toda la página hacia arriba
Aquí está mi código completo:
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" />
¿Puedo tener alguna ayuda para que esto funcione?
Gracias por adelantado
- Pasar datos entre los modelos de vista MvvmCross
- HttpClient - Xamarin Android - MvvmCross
- MarkerClick funciona pero InfoWindowClick no abre ViewModel
- Los puntos de interrupción y las excepciones dejaron de funcionar correctamente, xamarin android
- Xamarin Forms Android Problemas, el paquete android.support.design. * No existe
- RelativeLayout en el cálculo del ancho de StackLayout
- Xamarin Android Exception causa "Frame no en el módulo"
- MvxAdapter personalizado - Métodos de reemplazo que no se llaman
Tengo el código funcionando.
Esto es lo que necesitaba ser cambiado para cada fragmento:
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
- Uso de RelativeLayout dentro de ScrollView no se produce en desplazamiento
- ¿No has podido encontrar HelloAndroid.apk?