6

का उपयोग कर एंड्रॉइड व्यूपेगर में काम नहीं कर रहा है, इसके लिए मैं एक स्वाइप एप्लिकेशन बनाना चाहता हूं, मैं एंड्रॉइड में ViewPager का उपयोग कर रहा हूं। जब मैं नीचे दिए गए कोड को चलाता हूं, तो यह सफलतापूर्वक चलता है और नीला रंग Fragment खोला जाता है, लेकिन स्वाइप इस पर काम नहीं कर रहा है। क्या आप मुझे बता सकते हैं क्यों?FragmentPagerAdapter

यह मेरा 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; 

    } 
} 

मैं तीन टुकड़े है:

  • 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

खंड का उपयोग क्यों करें। तत्काल विधि और न केवल 'नया redcolor() '? – Bhargav

+0

मैंने पहले से ही नए रेडकोलर() की कोशिश की लेकिन अभी भी काम किया है। –

उत्तर

0

आपका instantiateFrags समारोह थोड़ा अजीब है - आम तौर पर आप टुकड़े के भीतर से घोषित करना चाहिए पेजर एडाप्टर, और उसके बाद पेजर एडाप्टर को गतिविधि की ऑन क्रिएट विधि से तुरंत चालू करें। (यहाँ मैं का इस्तेमाल किया है एक TabLayout)

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 विधि में 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) { 
    } 

}); 

के लिए एक्सएमएल 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

पहले मैं पेज पर टैब नहीं जोड़ना चाहता हूं, मैं बस एक पूर्ण स्क्रीन पेज स्वाइप करना चाहता हूं: गैलरी में छवियों को स्वाइप करना। दूसरा: मैंने पहले ही नया रेडकोलर(); getItem() विधि में लेकिन वह अभी भी काम नहीं कर रहा है .. –

संबंधित मुद्दे