[英]Android : Swipe within fragment
在以下情況下,有人可以給我一個提示:
我有一個Android 3+應用程序,其中包含一組從ActionBarActivity派生而來的可互換操作活動。 其中一個包括一組源自Fragment的片段 ,用戶可以通過以下方式選擇它們:
getSupportFragmentManager().beginTransaction()
.replace(R.id.containerBase, FragmentX.getInstance(0))
.commit()
哪里
FragmentX extends Fragment {
public static FragmentX getInstance() {
FragmentX fragment = new FragmentX();
return fragment;
}
public FragmentX() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_x, container, false);
. . . . . . . .
return rootView;
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
. . . . . . . .
}
}
所有片段(X,Y,Z等)均正確顯示,我很高興,直到有必要修改某些片段,以便它們可以具有多個子頁面為止,用戶可以水平滑動這些子頁面。 其他片段應保持原樣。
哪些Android類可能是最佳選擇,如何將它們集成到我的應用中?
任何幫助將不勝感激。
需要具有“水平可滑動子頁面”的Fragment可能應該使用某種ViewPager。 您的用例尚不完全清楚,但以我的經驗,帶有另一組片段的ViewPager提供了一種很好而靈活的解決方案。 同樣,如果您的“子”片段(ViewPager中的片段)基本相同,但顯示不同的數據(例如,一組事件詳細信息片段),則也可以重用此片段。 如果沒有,則可以在ViewPager的public Fragment getItem(int position)
方法中使用switch
或類似的方法。
您應該看一下適合您需要的FragmentStatePagerAdapter ,鏈接的頁面上也有一個很好而詳細的使用方法示例。 這里要注意的一件事是,由於您正在片段中使用片段,因此包含ViewPager的片段將需要使用getSupportChildFragmentManager
而不是常規的getSupportFragmentManager
來顯示這些片段。
當然,我必須提供有關我的應用程序的更多詳細信息。
public class BasePage extends ActionBarActivity implements NavigationBase.NavigationDrawerCallbacks {
private int mPage;
private NavigationBase mNavigationFragment;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
. . . . . . . .
setContentView(R.layout.activity_base);
mNavigationFragment = (NavigationBase) fragmentManager.findFragmentById(R.id.navigation_drawer);
mNavigationFragment.setUp(
R.id.navigation_drawer,
(DrawerLayout) findViewById(R.id.drawer_layout));
}
private void setPage() {
switch(mPage) {
case 1:
fragmentManager.beginTransaction()
.replace(R.id.containerBase, FragmentX.getInstance())
.commit();
break;
case 2:
fragmentManager.beginTransaction()
.replace(R.id.containerBase, FragmentY.getInstance())
.commit();
break;
}
}
}
activity_base布局如下所示:
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="app.BasePage">
<RelativeLayout
android:id="@+id/containerBase"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<fragment
android:id="@+id/navigation_drawer"
android:layout_width="@dimen/navigation_drawer_width"
android:layout_height="match_parent"
android:layout_gravity="start"
android:name="app.NavigationBase" />
</android.support.v4.widget.DrawerLayout>
and calling . 用戶通過設置並調用瀏覽當前片段。
現在,我需要修改片段X,使其具有多個子頁面,而片段Y必須保持原樣。 在程序上,FragmentX和FragmentY類是相同的,它們僅顯示不同的用戶內容。
我理解在這種情況下ViewPager必須是正確的解決方案。 to build the ViewPager in my current code... 我的問題是我在當前代碼中看不到構建ViewPager ...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.