Android 使用fragmentpageradapter获取当前片段

Android 使用fragmentpageradapter获取当前片段,android,android-fragments,Android,Android Fragments,编辑:问题解决了。见下面的评论 我正在尝试为我的ViewPager实现一个OnPageChangeListener。我在确定活动片段(将类命名为myFragment)时遇到问题。在我的TabsAdapter中的某个地方,设置了片段: @Override public Fragment getItem(int position) { TabInfo info = mTabs.get(position); return Fragment.instantiate(mConte

编辑:问题解决了。见下面的评论

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

@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();
Fragment test = fm.findFragmentByTag(myfragment.class.getName());
然后myfragment.class.getName()出现在属性中。但如果我称之为:

FragmentManager fm = getSupportFragmentManager();
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)
另一个问题是,选项卡指示器未设置为活动选项卡。

(在注释中回答。请参阅)

OP写道:


获取片段ID或标记的一种方法是在调用
onCreateView()
时调用
myFragment.getID
。我试图设置一个标记,并编写更新方法。。。成功了。但是非常草率,因为如果调用了
OnWheelChangedListener
,则从未调用更新方法。我有六个轮子。。。然后我发现:


如果我使用Fragment.instatiate,片段将永远不会有ID或标记!获取片段ID或标记的一种方法是在调用onCreateView()时调用myFragment.getID。我试图设置一个标记,并编写更新方法。。。成功了。但是非常慢,因为如果调用OnWheelChangedListener,就会调用更新方法。我有六个轮子。。。然后我发现: