ViewPager in Fragment

  • Antworten:0
Rome Pierce
  • Forum-Beiträge: 2

26.07.2012, 18:54:57 via Website

Hi,

ich habe gerade erst mit Android programmierung angefangen. Kann allerdings schon Java. Ich krieg es einfach nicht hin mein gewünschtes Layout zu fabrizieren. Die App startet aber leider nicht. Kann mir da jemand helfen?
Ich möchte links ein paar Buttons als Menu haben und rechts einen ViewPager (Tabs + Swipe Activity). Bisher habe ich eine Activity mit xml:

1<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
2 xmlns:tools="http://schemas.android.com/tools"
3 android:layout_width="match_parent"
4 android:layout_height="match_parent"
5 android:orientation="horizontal" >
6
7 <fragment
8 android:id="@+id/mainMenuFragment"
9 android:layout_width="0dp"
10 android:layout_height="match_parent"
11 android:layout_weight="1"
12 class="yyy" />
13
14 <fragment
15 android:id="@+id/mainContentFragment"
16 android:layout_width="0dp"
17 android:layout_height="match_parent"
18 android:layout_weight="1"
19 class="xxx" />
20
21</LinearLayout>

Das Menu (einfaches LinearLayout) geht. Rechts xml:

1<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
2 xmlns:tools="http://schemas.android.com/tools"
3 android:id="@+id/pager"
4 android:layout_width="match_parent"
5 android:layout_height="match_parent"
6 tools:context=".zzz" />

1public class MyActivity extends FragmentActivity implements
2 ActionBar.TabListener {
3
4 SectionsPagerAdapter mSectionsPagerAdapter;
5
6 ViewPager mViewPager;
7
8 @Override
9 public void onCreate(Bundle savedInstanceState) {
10 super.onCreate(savedInstanceState);
11 setContentView(R.layout.myactivity);
12 mSectionsPagerAdapter = new SectionsPagerAdapter (
13 getSupportFragmentManager());
14
15 // Set up the action bar.
16 final ActionBar actionBar = getActionBar();
17 actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
18
19 // Set up the ViewPager with the sections adapter.
20 mViewPager = (ViewPager) findViewById(R.id.pager);
21 mViewPager.setAdapter(mSectionsPagerAdapter);
22
23 mViewPager
24 .setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
25 @Override
26 public void onPageSelected(int position) {
27 actionBar.setSelectedNavigationItem(position);
28 }
29 });
30
31 // For each of the sections in the app, add a tab to the action bar.
32 for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++) {
33 actionBar.addTab(actionBar.newTab()
34 .setText(mSectionsPagerAdapter.getPageTitle(i))
35 .setTabListener(this));
36 }
37 }
38
39 @Override
40 public boolean onCreateOptionsMenu(Menu menu) {
41 getMenuInflater().inflate(R.menu.asd, menu);
42 return true;
43 }
44
45 public class SectionsPagerAdapter extends FragmentPagerAdapter {
46
47 private List<MyFragment> pages = new LinkedList<MyFragment>();
48
49 public SectionsPagerAdapter (FragmentManager fm) {
50 super(fm);
51
52 pages.add(new MyFragment(
53 getString(R.string.v),
54 R.layout.layout1));
55 pages.add(new MyFragment(
56 getString(R.string.b),
57 R.layout.layout2));
58 pages.add(new MyFragment(
59 getString(R.string.n),
60 R.layout.layout3));
61 }
62
63 @Override
64 public Fragment getItem(int i) {
65 if (i < pages.size()) {
66 return pages.get(i);
67 }
68 return null;
69 }
70
71 @Override
72 public int getCount() {
73 return pages.size();
74 }
75
76 @Override
77 public CharSequence getPageTitle(int position) {
78 if (position < pages.size()) {
79 return pages.get(position).getTitle();
80 }
81 return null;
82 }
83 }
84
85 public void onTabReselected(Tab tab, FragmentTransaction ft) {
86 }
87
88 public void onTabSelected(Tab tab, FragmentTransaction ft) {
89 mViewPager.setCurrentItem(tab.getPosition());
90
91 }
92
93 public void onTabUnselected(Tab tab, FragmentTransaction ft) {
94 }
95}

1public class MyFragment extends Fragment {
2
3 private String title;
4 private int layoutID;
5
6 public SettingsFragment(String title, int layoutID) {
7 this.title = title;
8 this.layoutID = layoutID;
9 }
10
11 @Override
12 public View onCreateView(LayoutInflater inflater, ViewGroup container,
13 Bundle savedInstanceState) {
14
15 View v = new View(getActivity());
16 v = inflater.inflate(this.layoutID, container, false);
17 return v;
18 }
19
20 public String getTitle() {
21 return title;
22 }
23}

Antworten