2012-08-01 70 views
4

我有一个活动中的两个片段,在纵向模式下,第一个(ListFragment)显示,当用户在ListView中的某处显示第二个显示,而在横向模式下,所示。不过,我想在纵向模式下使用刷卡功能,而这应该显示下一个片段像this exampleViewPager不刷卡与FragmentPagerAdapter

这是我的延伸FragmentActivity主要laucher活动,

package com.myexample.fragmentdemoexample; 

import java.util.LinkedList; 
import java.util.List; 
import java.util.Vector; 

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 
import android.support.v4.app.ListFragment; 
import android.support.v4.view.ViewPager; 
import android.util.Log; 
import android.view.ViewGroup; 

public class MainFragmentActivity extends FragmentActivity { 
    private static int NUM_ITEMS = 4; 

    MyAdapter mAdapter; 

    ViewPager mPager; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     mPager = (ViewPager) findViewById(R.id.pager); 
     instantiateFragments(); 
     Log.i("MainFragmentActivity", "MainFragmentActivity is Created"); 
    } 

    public void instantiateFragments() { 
     List<Fragment> fragments = new Vector<Fragment>(); 
     fragments.add(Fragment.instantiate(this, MyListFragment.class.getName())); 
     fragments.add(Fragment.instantiate(this, DetailFragment.class.getName())); 
     mAdapter = new MyAdapter(getSupportFragmentManager(), fragments); 
     mPager.setAdapter(mAdapter); 
     mPager.setCurrentItem(0); 
    } 

    public class MyAdapter extends FragmentPagerAdapter { 
     private FragmentManager frmanager; 
     private List<Fragment> fragments; 

     public MyAdapter(FragmentManager fm, List<Fragment> fragList) { 
      super(fm); 
      frmanager = fm; 
      fragments = fragList; 
     } 

     @Override 
     public int getCount() { 
      return NUM_ITEMS; 
     } 

     @Override 
     public Fragment getItem(int position) { 
      return fragments.get(position); 
     } 
    } 
} 

这是我布局/ main.xml中文件

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" > 

    <android.support.v4.view.ViewPager 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/pager" 
     android:layout_width="match_parent" 
     android:layout_height="0px" 
     android:layout_weight="1" > 
    </android.support.v4.view.ViewPager> 

    <fragment 
     android:id="@+id/listFragment" 
     android:layout_width="150dip" 
     android:layout_height="match_parent" 
     class="com.myexample.fragmentdemoexample.MyListFragment" 
     android:tag="listFragment" > 
    </fragment> 

    <fragment 
     android:id="@+id/detailFragment" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     class="com.myexample.fragmentdemoexample.DetailFragment" 
     android:tag="detailFragment" > 
     <!-- Preview: [email protected]/details --> 
    </fragment> 

</LinearLayout> 

/layout-port/main.xml文件包含

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="horizontal" > 

    <android.support.v4.view.ViewPager 
     android:id="@+id/pager" 
     android:layout_width="match_parent" 
     android:layout_height="0px" 
     android:layout_weight="1" > 
    </android.support.v4.view.ViewPager> 

    <fragment 
     android:id="@+id/listFragment" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     class="com.myexample.fragmentdemoexample.MyListFragment" /> 

</LinearLayout> 

我不知道为什么View Pager没有刷入下一个片段......我该怎么做?我第一次使用Fragment API ..所以请给正确的方向指点一些。

注意对于其他文件看到this question

回答

3

最后harrasment的小时后问题解决了由主要布局文件中删除片段标记。现在main.xml中包含

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" > 

    <android.support.v4.view.ViewPager 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/pager" 
     android:layout_width="match_parent" 
     android:layout_height="0px" 
     android:layout_weight="1" > 
    </android.support.v4.view.ViewPager> 


</LinearLayout> 

这可能是与其他类似的问题有帮助...

1

即使它不直接回答这个问题,但它有回答类似的问题,我已经面对。可能会帮助他人有类似的问题。

如果你有喜欢

<AppBarLayout> 
    <ToolBar /> 
     <TabLayout /> 
      <ViewPager /> 
</AppBarLayout> 

布局这里的错误是ViewPager不应该是内部AppBarLayout。因此,将您的代码更改为:

<AppBarLayout> 
    <ToolBar /> 
     <TabLayout /> 
</AppBarLayout> 
<ViewPager />