Saya tidak dapat menemukan menemukan FragmentPagerAdapter di dalam Android.App.
Saya tidak ingin menggunakan Fragmen dari Android.Support.V4.App, karena API target saya adalah 14 dan lebih tinggi (Android 4.0 dan lebih tinggi). Jadi, saya hanya ingin menggunakan Android.App.Fragments polos, dan ada kelas terkait.
Saya hanya menemukannya di Android.Support.V4.App, tapi ini tidak cukup untuk saya b / c Saya mencoba menggunakan Android.App.Fragment (bukan Android.Support.V4.App.Fragment's) dan ada kelas terkait dalam Android.App (bukan Android.Support.V4.App), dan kode saya tidak dapat dikompilasi jika saya memperoleh pager dari FragmentPagerAdapter jika berasal dari pustaka Dukungan, karena jenis ketidakcocokan yang dihasilkan antara Android.App dan Android.Support .V4.App.
Seperti halnya case di sini Tidak dapat dilemparkan ke android.app.Fragment , apakah ada pager "normal" (PagerAdapter) yang harus saya gunakan di tempat FragmentPagerAdapter atau sesuatu (seperti Anda berasal dari Aktivitas normal, dan bukan FragmentActivity, saat menargetkan API 11 atau lebih tinggi).
Ini adalah contoh kode yang saya kerjakan (file FragmentPagerSupport.cs dalam solusi Support4.sln dari contoh MonoDroid yang ditemukan di https://github.com/xamarin/monodroid-samples/tree/master/Support4 ).
Saya telah mengomentari baris yang mereferensikan Android.Support.V4.App dan menggantinya dengan kode yang merujuk Android.App. Tidak ada FramePagerAdapter di luar Android.Support.V4.App yang bisa saya temukan, dan saya sangat membutuhkannya).
Terima kasih.
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;
//using Android.Support.V4.View;
namespace Support4
{
[Activity (Label = "@string/fragment_pager_support")]
[IntentFilter (new[]{Intent.ActionMain}, Categories = new[]{ "mono.support4demo.sample" })]
//public class FragmentPagerSupport : FragmentActivity
public class FragmentPagerSupport : Activity
{
const int NUM_ITEMS = 10;
MyAdapter adapter;
ViewPager pager;
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
SetContentView(Resource.Layout.fragment_pager);
//adapter = new MyAdapter(SupportFragmentManager);
adapter = new MyAdapter(FragmentManager);
pager = FindViewById<ViewPager>(Resource.Id.pager);
pager.Adapter = adapter;
var button = FindViewById<Button>(Resource.Id.goto_first);
button.Click += (sender, e) => {
pager.CurrentItem = 0;
};
button = FindViewById<Button>(Resource.Id.goto_last);
button.Click += (sender, e) => {
pager.CurrentItem = NUM_ITEMS - 1;
};
}
// ?????????????????????????????????????????????????
// - where is FragmentPagerAdapter
// ?????????????????????????????????????????????????
protected class MyAdapter : FragmentPagerAdapter
{
public MyAdapter(FragmentManager fm) : base(fm)
{
}
public override int Count {
get {
return NUM_ITEMS;
}
}
public override Fragment GetItem (int position)
{
return new ArrayListFragment(position);
}
}
protected class ArrayListFragment : ListFragment
{
int num;
public ArrayListFragment()
{
}
public ArrayListFragment(int num)
{
var args = new Bundle();
args.PutInt("num", num);
Arguments = args;
}
public override void OnCreate (Bundle p0)
{
base.OnCreate (p0);
num = Arguments != null ? Arguments.GetInt("num") : 1;
}
public override View OnCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
var v = inflater.Inflate(Resource.Layout.fragment_pager_list, container, false);
var tv = v.FindViewById<TextView>(Resource.Id.text);
tv.Text = "Fragment #" + num;
return v;
}
public override void OnActivityCreated (Bundle p0)
{
base.OnActivityCreated (p0);
ListAdapter = new ArrayAdapter<string>(Activity, Android.Resource.Layout.SimpleListItem1, Cheeses.cheeseStrings);
}
public override void OnListItemClick(ListView l, View v, int position, long id) {
Console.WriteLine ( "Item clicked: " + id);
}
}
}
}
android.support.v13.app.FragmentPagerAdapter
. Tidak yakin apakah itu akan membantu Anda, tapi ...Jawaban:
Ada satu yang ada di dalam
android.support.v13.app.FragmentPagerAdapter
, yang harus melakukan apa yang Anda inginkan. Ini adalah FragmentPagerAdapter untuk fragmen yang tidak mendukung.Instalasi Android Studio
Silakan tambahkan ikuti dependensi Gradle
sumber
import android.support.v13.app.FragmentPagerAdapter;
ide? yakin telah menambahkan kompilasi 'com.android.support:support-v13:23.1.1' ke gradlesupport:support-v13
memiliki konflik dengansupport:design
dalam kasus sayaUgh, Anda hanya perlu menggunakan FragmentPagerAdapter dari perpustakaan dukungan V13
Kemudian semua kelas terkait Fragmen lainnya dapat digunakan dari pustaka / ruang nama "normal", dengan pengecualian ViewPager, tapi itu bukan masalah besar.
Berikut ini contoh untuk kelengkapan (contoh "Support4" yang dimodifikasi dari https://github.com/xamarin/monodroid-samples/ ):
sumber
Tambahkan dependecy ini ke dependensi gradle:
Dan gunakan
android.support.v13.app.FragmentPagerAdapter
seperti ini (saya hanya memodifikasi proyek demo resmi di android studio: file → baru → proyek baru → berikutnya → berikutnya → aktivitas tab → berikutnya → selesai):sumber
Per 2019 dengan AndroidX
sumber
Punya masalah yang sama. Solusi saya adalah menyalin kode dari android.support.v4.app.FragmentPagerAdapter, lalu ubah kelas Fragment yang diimpor ke android.app.Fragment. Setelah itu lakukan adaptasi kecil lainnya untuk menghapus semua kesalahan. Yang mengejutkan saya ini bekerja dengan sempurna. IMO ini lebih sederhana daripada menambahkan pustaka dukungan yang sebenarnya tidak Anda butuhkan.
sumber