2017-06-21 12 views
0

私はアンドロイドの開発には新しく、誰もこの問題を抱えていないようです。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

投稿コードpl30 –

+0

使用しているコードはどこですか?コードを表示しないと、どうやって手助けすることができますか?少なくとも、問題を生成していると思うコード – jcvegan

+0

私は何が間違っているのか分かりませんが、私はそれがそれらのファイルの1つと関係があると思います。もう1つはviewPagerのレイアウトです。これはうまく動作します。 – Mairead

答えて

1

この

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

のようなあなたのアダプタにフラグメントを追加してみてくださいそして、

012それを呼び出します
viewPager.setAdapter(adapter); 

アクティビティhome.xmlも投稿できますか?

+0

home.xmlが追加されているため、同じページが表示されます。アダプタに追加すると、addFragmentとsetAdapterは、シンボルを解決できず、クラスをインポートできないというエラーメッセージが表示されます。また、私はどこでそれを呼ぶでしょうか? – Mairead

+1

@Mairead問題は、あなたが公開しているScreenSlidePageFragmentを返すgetItemメソッドにあると思います。配列を返すか、他のフラグメントのスイッチを作成する必要があります。この場合、1つのフラグメントのみが返されます。 – gunessun

関連する問題