1

编辑:问题已解决。请参阅下面的评论...

我正在尝试为我的 ViewPager 实现 OnPageChangeListener。我在确定活动片段时遇到问题(将类命名为 myFragment)。在我的 TabsAdapter 的某处设置了 Fragment:

@Override
public Fragment getItem(int position) 
{
      TabInfo info = mTabs.get(position);
      return Fragment.instantiate(mContext, info.clss.getName(), info.args);
}

我认为,info.clss.getName() 就像 myFragment.class.getName()。如果我这样称呼:

FragmentManager fm = getSupportFragmentManager();

然后 myfragment.class.getName() 出现在属性中。但如果我这样称呼:

Fragment test = fm.findFragmentByTag(myfragment.class.getName());

测试为空。

在运行时查看 FM 是什么:

fm  FragmentManagerImpl  (id=830007952696)  
    mActive ArrayList  (id=830007771376)    
        array   Object[12]  (id=830008021856)   
            [0] fragment1  (id=830007965416)    
            [1] myFragment (id=830008076232)    
            [2] null    
            ...
        size    2   
    mActivity   tabActivity  (id=830007948592)  
    mAdded  ArrayList  (id=830007781264)    
    mAvailBackStackIndices  null    
    mAvailIndices   null    
    mBackStack  null    
    mBackStackChangeListeners   null    
    mBackStackIndices   null    
    mCreatedMenus   null    
    mCurState   5   
    mDestroyed  false   
    mExecCommit FragmentManagerImpl$1  (id=830007953504)    
    mExecutingActions   false   
    mHavePendingDeferredStart   false   
    mNeedMenuInvalidate false   
    mNoTransactionsBecause  null    
    mPendingActions ArrayList  (id=830007908880)    
    mStateArray null    
    mStateBundle    null    
    mStateSaved false   
    mTmpActions Runnable[1]  (id=830007783384)

另一个问题是,选项卡指示器未设置为活动选项卡。

4

1 回答 1

0

(已在评论中回答。请参阅没有答案的问题,但问题已在评论中解决(或在聊天中扩展)

OP写道:

获取片段 ID 或标签的一种方法是在被调用myFragment.getIDonCreateView()调用。我试图设置一个标签,并编写更新方法......这很有效。但是非常草率,因为如果调用了更新方法,则永远不会调用 an OnWheelChangedListener。我有六个轮子......然后我发现了这个:Detect ViewPager tab change inside Fragment

于 2015-01-26T16:33:22.137 回答