我想使用findFragmentById()
得到一個片段引用,但它總是返回一個空對象。我已使用FragmentPagerAdapter
並附加了OnPageChangeListener
因此,無論何時滾動到特定片段(例如FragmentB
),都應該觸發FragmentB
的方法。SupportFragmentManager的findFragmentById總是返回null
我有以下代碼:
mPager.addOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
if (position == 1) {
FragmentB fb = (FragmentB) getSupportFragmentManager().findFragmentById(R.id.fragment_b);
fb.refreshList();
//fb is always null
Toast.makeText(MainActivity.this,"Scrolled", Toast.LENGTH_SHORT).show();
//Toast is working fine
}
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2){}
@Override
public void onPageScrollStateChanged(int arg0){}
});
謝謝。你的解決方案有效但是,你能告訴我是否想在MainActivity的onCreate()或onCreateView()中獲取'Fragment'嗎?我試過他們,但我總是得到一個NullPointerException。 – MrShadow
@MrShadow你爲什麼要在'onCreate()'中調用fragment,即剛創建Adapter之後?它尚未附加到活動中。但無論如何,從適配器初始化後的類的幾乎任何一點你都可以這樣做:'((PagerAdapter)mPager.getAdapter())。getItem(mPager.getCurrentItem());' –
我想添加一個自定義接口監聽片段以便片段可以相互通信。我在FragmentA中有一個recyclerview,在FragmentB中有另一個RecyclerView。我想在FragmentA中發生一些事情時更新FragmentB的RecyclerView。爲了實現這一點,我必須使用接口來實現分片間通信。這是我所指的[鏈接](http://stackoverflow.com/a/15448538/3561262) – MrShadow