标签: fragmentpageradapter

更新FragmentPagerAdapter中的当前片段

我有一个带有标签指示器的viewPager.ViewPager是带有FragmentPagerAdapter的setAdaper.

我几乎不了解FragmentPagerAdapter的内部是如何工作的.我注意到邻居片段已恢复(OnResume被调用),即使邻居尚未可见.

我把更新方法放在OnResume中,认为一旦片段是最新的,它就会被更新.

广告横幅刷新
我希望在向左滑动一次或向右滑动一次时,页脚中设置的广告横幅更新.不重建邻居片段(好事).但onResume已被称为避免横幅刷新.loadBannerAd方法在OnResume()方法中.



如何通过片段内的方法仅为当前片段调用方法loadBannerAd()?

编辑:我已经知道mViewPager.setOnPageChangeListener().

    OnPageChangeListener mOnPageChangeListener = new ViewPager.OnPageChangeListener() {

        @Override
        public void onPageSelected(int position) {
        // this method can be called before the fragment 's onCreateView()
        }

        ....
    };
Run Code Online (Sandbox Code Playgroud)

但是尚未创建片段存在危险.管理是否已在Activty中创建片段会使其失效.

在此输入图像描述

android android-viewpager fragmentpageradapter

5
推荐指数
1
解决办法
1万
查看次数

没有显示FragmentPagerAdapter的ViewPager

我正在使用Xamarin,这是我第二次尝试使用ViewPager.我已经从头开始创建了一个应用程序,参考了这个网站链接:http://looksok.wordpress.com/2013/10/26/android-support-v4-viewpager-tutorial-including-source-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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

MyPagerAdapter.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-viewpager fragmentpageradapter xamarin

5
推荐指数
1
解决办法
3656
查看次数

在片段之间滑动时如何更改ActionBar颜色(Material Design)?

我有一个我正在做的应用程序,它有一个FragmentPagerAdapter设置,其中有3个片段可以在主页面之间滑动.

我一直试图让它设置好,所以当您在片段之间滑动时,操作栏会改变颜色(淡入和淡出).

但是我不确定我应该怎么做.在片段之间滑动时调用什么方法?IE应该在哪里放置代码来改变动作栏的颜色?

而且我如何获得淡入和淡出效果(因此它将一种颜色淡化为另一种颜色)?

我真的很感激任何人的帮助.

提前致谢

干杯科里:)

android android-actionbar fragmentpageradapter material-design

5
推荐指数
1
解决办法
2557
查看次数

java.lang.InstantiationException:无法实例化类...没有空构造函数

我找到了像我这样的类似问题的主题但是找不到我到目前为止找到的答案.我的应用程序包含一个FragmentActivity托管ViewPagerAdapter(FragmentPagerAdapter的子代)并在每个选项卡中包含一个片段的应用程序.我的ViewPagerAdapter在父活动的OnCreateView函数中实例化

_adapter = new ViewPagerAdapter(getApplicationContext()
                         , getSupportFragmentManager()
                         , numOfTabs
                         , status);
Run Code Online (Sandbox Code Playgroud)

ViewPagerAdapter实现了所需的最少方法 getItem,getCount以及getItemPosition

getItem为每个位置初始化了一个不同的片段:

    @Override
public Fragment getItem(int position) 
{
    Fragment f = new Fragment();
    Log.d("Adbox",String.format("Inside ViewPagerAdapter.getItem(%s)",position));

    switch(position)
    {
        case 0:
            Log.d("Adbox","All offers  ==");
            f=FragmentAllOffers.newInstance(_context);
            f.setRetainInstance(true);
            break;
        case 1:
            Log.d("Adbox","Nearby offers  ==");
            f=FragmentNearbyOffers.newInstance(_context);
            //f.setRetainInstance(true);
            break;
        case 2:
            Log.d("Adbox","My coupons  ==");
            f=FragmentCoupons.newInstance(_context);
            f.setRetainInstance(true);
            break;
        case 3:
            Log.d("Adbox","Account  ==");
            f=FragmentAccount.newInstance(_context);
            f.setRetainInstance(true);
            //f=LayoutLocal.newInstance(_context);  
            break;
        case 4:
            Log.d("Adbox","Preferences  ==");
            f=FragmentPreferences.newInstance(_context);
            f.setRetainInstance(true);
            break;
        default:
            break; …
Run Code Online (Sandbox Code Playgroud)

android single-instance fragmentpageradapter

4
推荐指数
1
解决办法
1万
查看次数

Android:在按钮点击时直接滚动/显示ViewPager中的特定页面

我想在按钮点击时显示ViewPager的特定页面.它正在工作,但滚动到该特定页面并不顺利,即假设我在页面号.1但是如果我想去第 5,其他页面2,3,4也滚动.我只想滚动到该特定页面.怎么做.我使用了以下代码,请看一下:

下面的代码是FragmentActivity:

public class ScreenSlideFragmentActivity extends FragmentActivity implements SlidingPageInterface{
    private static final int NUM_PAGES = 6;
    private ViewPager mPager;
    private PagerAdapter mPagerAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_screen_slide);
        mPager = (ViewPager) findViewById(R.id.pager);
        mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager());
        mPager.setAdapter(mPagerAdapter);
        mPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
            @Override
            public void onPageSelected(int position) {
            }
        });
    }

    private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
        public ScreenSlidePagerAdapter(android.support.v4.app.FragmentManager fragmentManager) {
            super(fragmentManager);
        }

        @Override
        public android.support.v4.app.Fragment getItem(int position) {
            return ScreenSlidePageFragment.create(position, NUM_PAGES, ScreenSlideFragmentActivity.this);
        }

        @Override
        public int getCount() { …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-viewpager fragmentpageradapter android-fragmentactivity

4
推荐指数
1
解决办法
2438
查看次数

更改 FragmentPagerAdapter 适配器在片段按钮单击上的位置

我正在开发 Android 应用程序。在我的应用程序中,我必须使用 5 个片段并从片段 1 滑动到片段 5。所以我使用了一个 FragmentActivity 、FragmentPagerAdapter 和 5 个片段。现在我可以滑动浏览所有片段,并可以通过使用来识别当前片段

ViewPager.OnPageChangeListener()
Run Code Online (Sandbox Code Playgroud)

我必须在所有片段中添加按钮,并且单击按钮必须像滑动一样打开下一个片段。我怎么能这样做呢?在这里我发布一些我的代码片段。

fragmentactivity.java

public class HomeScreen extends FragmentActivity 
{
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.themed_circles);

    mAdapter = new InsuranceFragmentAdapter(getSupportFragmentManager(),
            HomeScreen.this);
    mPager = (ViewPager) findViewById(R.id.pager);
    mPager.setAdapter(mAdapter);
    mIndicator = (CirclePageIndicator) findViewById(R.id.indicator);
    mIndicator.setViewPager(mPager);
    // mIndicator.setCurrentItem(2);

    mIndicator
            .setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
                private int pos;

                @Override
                public void onPageSelected(int position) {

                }

                @Override
                public void onPageScrolled(int position,
                        float positionOffset, int positionOffsetPixels) {


                }

                @Override
                public void onPageScrollStateChanged(int state) {
                    System.out.println("test scroll …
Run Code Online (Sandbox Code Playgroud)

android android-fragments fragmentpageradapter

4
推荐指数
1
解决办法
4826
查看次数

使用PagerSlidingTabStrips单击选项卡时切换标签不起作用

我已经集成PagerSlidingTabStrips在我的应用程序中,该应用程序在选项卡的滑动上按预期运行.

但是选择标签PagerSlidingTabStrips不会切换到在标签之间滑动时完美运行的那个片段.

FragmentManager fm = getSupportFragmentManager();
mPager = (ViewPager) findViewById(R.id.pager);
ViewPagerAdapter viewpageradapter = new ViewPagerAdapter(fm);
mPager.setAdapter(viewpageradapter);
pagerSlidingTabStrp = (PagerSlidingTabStrip) findViewById(R.id.pager_sliding_tab_strip);
pagerSlidingTabStrp.setShouldExpand(true);
pagerSlidingTabStrp.setViewPager(mPager);
pagerSlidingTabStrp.setOnPageChangeListener(ViewPagerListener);     


// Capture ViewPager page swipes
    ViewPager.SimpleOnPageChangeListener ViewPagerListener = new ViewPager.SimpleOnPageChangeListener() {
        @Override
        public void onPageSelected(int position) {
            super.onPageSelected(position);
            switch(position)
            {
            case 0:
                setMotherActionBarTitle(getString(R.string.str_all_contacts_fragment));
                break;
            case 1:
                setMotherActionBarTitle(getString(R.string.str_group_contacts_fragment));
                break;
            case 2:
                setMotherActionBarTitle(getString(R.string.str_call_logs_fragment));
                break;                  
            }
        }
    };
Run Code Online (Sandbox Code Playgroud)

ViewPagerAdapter

public class ViewPagerAdapter extends FragmentPagerAdapter implements IconTabProvider {
final int PAGE_COUNT = 3;
private final int[] ICONS …
Run Code Online (Sandbox Code Playgroud)

android android-viewpager fragmentpageradapter pagerslidingtabstrip

4
推荐指数
1
解决办法
4582
查看次数

Android标签点击滚动到顶部

在我的应用程序中,使用FragmentPagerAdapter实现选项卡

public class TabsPagerAdapter extends FragmentPagerAdapter {

public TabsPagerAdapter(android.support.v4.app.FragmentManager fm) {
    super(fm);
}

@Override
public Fragment getItem(int index) {

    switch (index) {

    case 0:
        return new OutboxFragment();
    case 1:
        return new ComposeFragment();
    case 2:
        return new NotificationFragment();
    case 3:
        return new MoreFragment();
    }

    return null;
}

@Override
public int getCount() {
    return 4;
}

public Fragment getFragment(ViewPager container, int position, FragmentManager fm) {
    String name = makeFragmentName(container.getId(), position);
    return fm.findFragmentByTag(name);
}

private String makeFragmentName(int viewId, int index) {
    return "android:switcher:" …
Run Code Online (Sandbox Code Playgroud)

tabs android scroll fragmentpageradapter

4
推荐指数
1
解决办法
5492
查看次数

getItem被调用两次,这导致tab1和tab2都在FragmentPagerAdapter中执行

我有一个滑动选项卡,有三个不同的片段,用于三个选项卡.FragmentPagerAdapter中的getItem方法调用了两次.我的第一个选项卡加载本地数据,并且具有与下两个选项卡不同的布局(tab2,tab3).Tab2和Tab3从服务器获取数据并相应地加载.

我的问题是,第一次加载getItem被调用两次,这导致tab1和tab2都被执行.虽然tab1只包含本地数据,但由于两次调用tab2已执行并从服务器获取数据.

我不想在tab1中执行tab2及其功能,依此类推.

getItem()代码:

@Override public Fragment getItem(int position) { 
    Fragment fragment = null; 
    switch (position) { 
        case 0: fragment = new CommentFragment(); break; 
        case 1: fragment = new AllPostFragment(); break; 
        case 2: fragment = new TodayFragment(); break; 
    } 
    return fragment; 
}
Run Code Online (Sandbox Code Playgroud)

所以,我正在寻找一个解决方案.如果可以,请帮帮我.

android android-fragments fragmentpageradapter

4
推荐指数
1
解决办法
4148
查看次数

ViewPager 中的片段在旋转时在其 RecyclerView 中不显示任何内容

我在与 TabLayout 集成的 ViewPager 中有 4 个片段。这些 Fragment 中的每一个都包含一个 RecyclerView,因为我正在显示未知数量的列表项。这些项目是按日期加载的,所以我有两个按钮可以让您更改日期,然后根据设置的日期加载列表项目中的相应数据。按钮是外部活动的一部分。

到目前为止一切正常,但是一旦我旋转设备,片段就不会加载任何东西。片段内不显示任何内容。不过,外部活动中的视图显示得很好。奇怪的是,如果我触摸更改日期的按钮之一,则会加载片段并正确显示数据。但是我需要在旋转后立即显示所有内容,而不仅仅是在我单击这些按钮之一时。这是我的代码:

public class MainActivity extends AppCompatActivity implements DatePickerFragment.DateDialogInterface
{
    private final static String COLOR_CONTROL_CHOSEN = "color_control_chosen";
    private static final String DIALOG_DATE = "dialog_date";
    private static final String TAG = "MainActivity";
    private static final String SET_LOCATION = "set_location";
    public static final String LEAGUE_POSITION = "league_position";
    private Toolbar mToolbar;
    private ViewPager mViewPager;
    private TabLayout mTabLayout;
    private ImageButton mPrevDateButton, mNextDateButton;
    private TextView mDateTextView, mLeagueTextView;
    private String mTodaysDate;
    private Date mLastSelectedDate, mTodaysDateObj;
    private ProgressBar …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-viewpager fragmentpageradapter

4
推荐指数
1
解决办法
2552
查看次数