6

これでスワイプアプリケーションを作成したいと思います。AndroidでViewPagerを使用しています。以下のコードを実行すると、正常に実行され、青色のFragmentが開かれますが、スワイプはこれで動作しません。なぜか教えてくれますか?FragmentPagerAdapterを使用して、アンドロイドViewPagerでスワイプが動作しない

これは私のActivity:これは

package app.learn.com.learnapp; 

import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.view.ViewPager; 

import android.os.Bundle; 

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

import menulistFrag.blueColor; 
import menulistFrag.greenColor; 
import menulistFrag.redColor; 


public class MenuActivityList1 extends FragmentActivity { 

    ViewPager viewPager; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_menu_activity_list1); 
     viewPager = (ViewPager)findViewById(R.id.pager); 

     instantiateFrags(); 



    } 
    public void instantiateFrags(){ 
     List<Fragment> frags = new Vector<Fragment>(); 
     frags.add(Fragment.instantiate(this, redColor.class.getName())); 
     frags.add(Fragment.instantiate(this, greenColor.class.getName())); 
     frags.add(Fragment.instantiate(this, blueColor.class.getName())); 
     PagerAdapter pagerAdapter = new PagerAdapter(getSupportFragmentManager(),frags); 
     viewPager.setAdapter(pagerAdapter); 
     viewPager.setCurrentItem(0); 
    } 
} 

である私のPagerAdapter

package app.learn.com.learnapp; 


import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 

import java.util.List; 

import menulistFrag.blueColor; 
import menulistFrag.greenColor; 
import menulistFrag.redColor; 

/** 
* Created by root on 13/9/15. 
*/ 

public class PagerAdapter extends FragmentPagerAdapter { 
    List<Fragment> fragments; 
    public PagerAdapter(FragmentManager fm,List<Fragment> fragLists){ 
     super(fm); 
     fragments =fragLists; 
    } 
    @Override 
    public Fragment getItem(int position) { 
    return fragments.get(position); 
    } 

    @Override 
    public int getCount() { 
     return 3; 

    } 
} 

私は3つの断片があります

  • redColor.javaを

  • greenColor.java

  • blueColor.java

そして、これは私のレイアウトファイルです:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 
<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/pager"> 

</android.support.v4.view.ViewPager> 
</LinearLayout> 
+0

なぜフラグメントを使用しますか?メソッドをインスタンス化し、 'new redColor()'だけでなく? – Bhargav

+0

私はすでに新しいredColor()を試しましたが、それでも今は機能しています。 –

答えて

0

あなたinstantiateFrags機能は少し奇妙である - 通常、あなたは内からの断片を宣言する必要がありますPagerAdapterを作成し、PagerAdapter自体をアクティビティのonCreateメソッドからインスタンス化します。

public class PagerAdapter extends FragmentPagerAdapter { 
    int mNumOfTabs; 

    public PagerAdapter(FragmentManager fm, int NumOfTabs){ 
     super(fm); 
     this.mNumOfTabs = NumOfTabs; 
    } 

    @Override 
    public Fragment getItem(int position) { 
     switch (position) { 
      case 0: 
       blueColor tab1 = new blueColor(); 
       return tab1; 
      case 1: 
       greenColor tab2 = new greenColor(); 
       return tab2; 
      case 2: 
       redColor tab3 = new redColor(); 
       return tab3; 
      default: 
       return null; 
     } 
    } 

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

そしてメインの活動であなたのonCreateメソッドで(私はここでTabLayoutを使用している)PagerAdapterを初期化:用

TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout); 
tabLayout.addTab(tabLayout.newTab().setText("Blue")); 
tabLayout.addTab(tabLayout.newTab().setText("Green")); 
tabLayout.addTab(tabLayout.newTab().setText("Red")); 
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 

ViewPager viewPager = (ViewPager) findViewById(R.id.pager); 
PagerAdapter adapter = new PagerAdapter(
     getSupportFragmentManager(), tabLayout.getTabCount()); 
viewPager.setAdapter(adapter); 
viewPager.addOnPageChangeListener(
     new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); 
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
    @Override 
    public void onTabSelected(TabLayout.Tab tab) { 
     viewPager.setCurrentItem(tab.getPosition()); 
    } 

    @Override 
    public void onTabUnselected(TabLayout.Tab tab) { 
    } 

    @Override 
    public void onTabReselected(TabLayout.Tab tab) { 
    } 

}); 

XML PagerAdapterのためのあなたのコードは、次のようなものかもしれませんタブレイアウトとページャー:

<android.support.design.widget.TabLayout 
     android:id="@+id/tab_layout" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:minHeight="?attr/actionBarSize" 
     android:layout_alignParentTop="true" 
     android:theme="@style/YOUR_THEME_HERE"/> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/pager" 
     android:layout_width="match_parent" 
     android:layout_height="fill_parent" 
     android:layout_below="@id/tab_layout"/> 
+0

最初にページにタブを追加したくない、ギャラリーの画像をスワイプするような全画面のページをスワイプしたいだけです。 second:私はすでに新しいredColor()を試しました。 getItem()メソッドではまだ動作していません。 –

関連する問題