2017-06-21 111 views
0

我是新來的android開發,沒有人似乎有這個問題,所以也許我只是密集。viewPager每次顯示相同的頁面

無論如何,我的問題是,我每次更改屏幕時,格式化的viewPager顯示相同的字符串。我使用this教程來創建它,所以我的代碼與示例代碼相同。如何正確格式化代碼/我應該向代碼添加什麼內容,以便在翻頁時顯示不同的屏幕?

編輯:我的代碼

首頁

public class Home extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_home); 

    mPager = (ViewPager) findViewById(R.id.pager); 
    mPagerAdapter = new ScreenSlidePager.ScreenSlidePagerAdapter(getSupportFragmentManager()); 
    mPager.setAdapter(mPagerAdapter); 

    } 


    private static final int NUM_PAGES = 5; 

    private ViewPager mPager; 

    private PagerAdapter mPagerAdapter; 

    @Override 
    public void onBackPressed() { 
     if (mPager.getCurrentItem() == 0) { 
     } 
     else { 
     mPager.setCurrentItem(mPager.getCurrentItem() - 1); 
     } 
    } 

public class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter { 
    public ScreenSlidePagerAdapter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return new ScreenSlidePageFragment(); 
    } 

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

ScreenSlidePageFragment

public class ScreenSlidePageFragment extends Fragment { 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    ViewGroup rootView = (ViewGroup) 
      inflater.inflate(R.layout.fragment_screen_slide_page, container, false); 

    return rootView; 
} 

} 

fragment_screen_slide_page

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/content" 
android:layout_width="match_parent" 
android:layout_height="match_parent" > 

<TextView style="?android:textAppearanceMedium" 
    android:padding="16dp" 
    android:lineSpacingMultiplier="1.2" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/lorem_ipsum" /> 

Home.xml

<LinearLayout 
android:layout_width="390dp" 
android:layout_height="200dp" 
android:layout_marginBottom="10dp" 
android:layout_marginTop="10dp" 
android:orientation="vertical" 
app:layout_constraintBottom_toTopOf="@id/ffweButton" 
app:layout_constraintLeft_toLeftOf="parent" 
app:layout_constraintRight_toRightOf="parent" 
app:layout_constraintTop_toBottomOf="@id/homeButton" 
app:layout_constraintVertical_bias="0.6"> 

    <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="match_parent"/> 

+1

發佈您的代碼plz –

+0

您正在使用的代碼在哪裏?如果您不顯示代碼,我們如何幫助您?至少,您認爲的代碼會產生問題 – jcvegan

+0

我不確定它有什麼問題,但我認爲它與這些文件中的一個有關。另一個只是viewPager的佈局,它工作正常。 – Mairead

回答

1

嘗試增加碎片適配器這樣

adapter.addFragment(new Fragment1(), "FRAG1"); 
    adapter.addFragment(new Fragment2(), "FRAG2"); 
    adapter.addFragment(new Fragment3(), "FRAG3"); 

然後調用它

viewPager.setAdapter(adapter); 

你也可以發佈活動home.xml嗎?

+0

home.xml被添加。當我將它添加到我的適配器時,addFragment和setAdapter會出現錯誤消息,指出該符號無法解析,並且不能導入任何類。另外,我會在哪裏打電話? – Mairead

+1

@Mairead我認爲問題出在你的公共片段getItem方法,你返回ScreenSlidePageFragment。您應該返回一個數組或爲其他片段進行切換。在這種情況下,你只返回1個片段。 – gunessun

相關問題