2016-04-07 30 views
1

Ben viewpager ile ActionBar.TabListener uyguladık. Şimdi bazı durum için sekme tıklatmak istiyorum Ben TouchListner kullanarak tokatlamak durdu ama Tab Click için aynı şeyi yapmak istiyorum. İşte kodum.Bazı koşullarda ActionBar.TabListener nasıl devre dışı bırakılır/devre dışı bırakılır

MainActivity.java

public class MainActivity extends FragmentActivity implements ActionBar.TabListener { 

    ActionBar actionBar; 
    ViewPager viewPager; 
    String check =""; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     viewPager = (ViewPager) findViewById(R.id.pager); 

     FragmentManager fragmentManager = getSupportFragmentManager(); 
     viewPager.setAdapter(new MyAdpter(fragmentManager)); 
     viewPager.setOnTouchListener(new View.OnTouchListener() { 

      @Override 
      public boolean onTouch(View arg0, MotionEvent arg1) { 
       // TODO Auto-generated method stub 

       if ("".equals(check)) { 
        return true; 
       } 
       return false; 
      } 
     }); 
     viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
      @Override 
      public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 

      } 

      @Override 
      public void onPageSelected(int position) { 
       actionBar.setSelectedNavigationItem(position); 
      } 

      @Override 
      public void onPageScrollStateChanged(int state) { 

      } 
     }); 
     actionBar = getActionBar(); 
     actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 


     ActionBar.Tab tab1 = actionBar.newTab(); 
     tab1.setText("Tab 1"); 
     tab1.setTabListener(this); 

     ActionBar.Tab tab2 = actionBar.newTab(); 
     tab2.setText("Tab 2"); 
     tab2.setTabListener(this); 

     ActionBar.Tab tab3 = actionBar.newTab(); 
     tab3.setText("Tab 3"); 
     tab3.setTabListener(this); 

     actionBar.addTab(tab1); 
     actionBar.addTab(tab2); 
     actionBar.addTab(tab3); 

     viewPager.setCurrentItem(2, false); 
    } 


    @Override 
    public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) { 
      viewPager.setCurrentItem(tab.getPosition()); 
    } 

    @Override 
    public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) { 

    } 

    @Override 
    public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) { 

    } 
} 

MyAdpter.java

class MyAdpter extends FragmentPagerAdapter{ 

    public MyAdpter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     Fragment fragment = null; 
     if(position==0){ 
      fragment = new FragmentA(); 
     } 
     if(position==1){ 
      fragment = new FragmentB(); 
     } 
     if(position==2){ 
      fragment = new FragmentC(); 
     } 
     return fragment; 
    } 

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

FragmentA.java

public class FragmentA extends Fragment { 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     return inflater.inflate(R.layout.fragment_a , container,false); 
    } 
} 

FragmentB/FragmentC activity_main.xml

Fragmenta benzer

<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" > 

</android.support.v4.view.ViewPager> 

ScreenShot

enter image description here

+0

Dokunma dinleyicisini tam olarak devre dışı bırakmak istediğiniz senaryolar nelerdir? – Newbiee

+0

Her şeyi bir sekme numarasıyla yönetmek mümkün olmadığından, etrafınızdaki iş, devre dışı bırakmak istediğiniz sekmeler tıklandığında diğer sekmede tıklamaları gerçekleştirecektir – Newbiee

+0

Dinleyiciyi sekmelerden nasıl devre dışı bırakabilirim? – Pallavi

cevap

0

böyle bir şey yapabilirsiniz ..

onay kutusu için OnCheckedChanged dinleyici de, sen .. etkinleştirmek hangi sekmeleri belirtmek

sadece sekmesinde tıklama etkinleştirmek veya devre dışı bırakmak için

// to enable 
tabLayout.getChildAt(position).setEnabled(true); 

// or to disable 
tabLayout.getChildAt(position).setClickable(false);. 

kullanımını bu özellik yaparak olabilir.

+0

Burada 'tabLayout' nedir? – Pallavi

+0

, eylem çubuğu ile ne kullanıyor olursanız olun, tablayout, onun android tasarım aracı eklendi. Bu widget için bu yöntemleri kullanabilirsiniz. Sizin durumunuz için, tablayout'u viewpager ile kullanabilir ve eylem çubuğu sekmeleri, engelleme özelliğini etkinleştirmek için bu yöntemleri desteklemediğinden amacınızı saklayabilirsiniz. ** ile başlayabilirsiniz. ** https: //guides.codepath.com/android/google-play- style-tabs-using-tablayout ** kullanımı çok kolay. – Newbiee