簡體   English   中英

Android:在片段內滑動

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM