我是Fragments的新手。我正在嘗試開發滑動選項卡。從Activity調用Fragment方法,findFragmentById返回null
我有以下適配器:
public class HomeTabsPagerAdapter extends FragmentPagerAdapter {
public HomeTabsPagerAdapter(android.support.v4.app.FragmentManager fm) {
super(fm);
}
@Override
public android.support.v4.app.Fragment getItem(int idx) {
switch (idx) {
case CONSTS_MAIN.TAB_WATCH:
return new WatchFragment();
case CONSTS_MAIN.TAB_DISCOVER:
return new DiscoverFragment();
case CONSTS_MAIN.TAB_LOG:
return new LogFragment();
}
return null;
}
@Override
public int getCount() {
return CONSTS_MAIN.HOME_NO_OF_TABS;
}
}
和MainActivity.java
public class MainActivity extends FragmentActivity implements ActionBar.TabListener {
}
,當然,分片類:
public class WatchFragment extends Fragment {
public class DiscoverFragment extends Fragment {
public class LogFragment extends Fragment {
,基本上一切似乎做工精細圖形。
但是,我試圖從活動中調用碎片的方法。我這樣做:
FragmentManager fm = getSupportFragmentManager();
WatchFragment watchFragment = (WatchFragment) fm.findFragmentById(R.id.watch_fragment);
watchFragment.refresh();
和這裏fm.findFragmentById
總是返回null。
我一直在使用android.support.v4.app
。
如何獲得片段類?
編輯:
這裏是片段的佈局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id ="@+id/watch_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:label="@string/title_activity_watch"
android:orientation="vertical" >
<com.x.y.custom_controls.CustomWatchChronologicalListView
android:id="@+id/lvWatchChronologicalDiscussions"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
,這裏是活動的佈局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</android.support.v4.view.ViewPager>
</RelativeLayout>
也許你正在使用'WatchFragment watchFragment =(WatchFragment)fm.findFragmentById(R.id.watch_fragment)ID;'不正確。你確定'WatchFragment'被加載到'R.id.watch_fragment'?請檢查。 – Rohit5k2
你如何處理碎片?你是動態還是靜態地將它們添加到XML佈局中? –
我添加了片段和活動的佈局。 @Rohit請看看Id是否不正確。 – dsb