繁体   English   中英

标签没有在Android中刷卡

[英]tabs are not swiping in android

当我尝试在onTabSelected()方法中使用setCurrentItem(arg0.getPosition())并实现我单击选项卡上的功能时,以下fragment s也会随之发生变化,我的应用程序崩溃了.....当我滑动时, Tab随之改变。

代码如下:

@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public class AboutUs extends FragmentActivity implements TabListener {

private ActionBar actionBar;
ViewPager viewPager;

@TargetApi(Build.VERSION_CODES.HONEYCOMB)
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.aboutus);
    intialization();

}

@TargetApi(Build.VERSION_CODES.HONEYCOMB)
private void intialization() {
    // TODO Auto-generated method stub

    actionBar = getActionBar();
//this is the line where the application crashes
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

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

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

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

    viewPager = (ViewPager) findViewById(R.id.pagger);
    viewPager.setAdapter(new MyAdapter(getSupportFragmentManager()));
    viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {

        @Override
        public void onPageSelected(int arg0) {
            // TODO Auto-generated method stub
            actionBar.setSelectedNavigationItem(arg0);
        }

        @Override
        public void onPageScrolled(int arg0, float arg1, int arg2) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onPageScrollStateChanged(int arg0) {
            // TODO Auto-generated method stub

        }
    });

}

@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
    // TODO Auto-generated method stub
    //Log.d("HAMZA", "onTabReselected at  " + "position" + tab.getPosition()
    //      + "name" + tab.getText());
}

@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
    // TODO Auto-generated method stub
    //Log.d("HAMZA", "onTabselected at  " + "position" + tab.getPosition()
        //  + "name" + tab.getText());
//this is the line where the application crashes
    viewPager.setCurrentItem(tab.getPosition());
}

@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
    // TODO Auto-generated method stub
    //Log.d("HAMZA", "onTabUnselected at  " + "position" + tab.getPosition()
    //      + "name" + tab.getText());
}

}

MyAdapter.java

class MyAdapter extends FragmentPagerAdapter {

public MyAdapter(FragmentManager fm) {
    super(fm);
    // TODO Auto-generated constructor stub
}

@Override
public Fragment getItem(int arg0) {
    // TODO Auto-generated method stub

    Fragment fragment = null;
    if (arg0 == 0) {

        fragment = new BlankFragment();
    }

    if (arg0 == 1) {

        fragment = new BlankFragmenta();
    }

    return fragment;
}

@Override
public int getCount() {
    // TODO Auto-generated method stub
    return 2;
}

}

您需要做的就是在添加选项卡之前初始化View分页器,即在intialization()中重新排序View分页器初始化语句并添加tabs语句。请参见下文

viewPager = (ViewPager) findViewById(R.id.pagger);
viewPager.setAdapter(new MyAdapter(getSupportFragmentManager()));
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {

    @Override
    public void onPageSelected(int arg0) {
        // TODO Auto-generated method stub
        actionBar.setSelectedNavigationItem(arg0);
    }

    @Override
    public void onPageScrolled(int arg0, float arg1, int arg2) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onPageScrollStateChanged(int arg0) {
        // TODO Auto-generated method stub

    }
});
      ActionBar.Tab tab1 = actionBar.newTab();
      tab1.setText("MUMTAZ ANWAR");
      tab1.setTabListener(this);

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

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

希望这可以帮助。

我相信,正如拙劣的小说所暗示的那样,这是有秩序的。 请遵循以下代码中的顺序。 它应该可以帮助您。

//Create View Pager first
viewPager = (ViewPager) findViewById(R.id.pager);
actionBar = getSupportActionBar();
viewPager.setAdapter(new MyAdapter(getSupportFragmentManager()));
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

// Add Tabs next
ActionBar.Tab tab1 = actionBar.newTab();
tab1.setText("MUMTAZ ANWAR");
tab1.setTabListener(this);

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

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


    // finally, set the pagelistener : swiping the viewpager make respective tab selected
    viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {

        @Override
        public void onPageSelected(int position) {
            // on changing the page
            // make respected tab selected
            actionBar.setSelectedNavigationItem(position);
        }

        @Override
        public void onPageScrolled(int arg0, float arg1, int arg2) {
        }

        @Override
        public void onPageScrollStateChanged(int arg0) {
        }
    });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM