如何将选项卡监听器设置为一个动作条 [英] How to set a tab listener to an ActionBar

查看:238
本文介绍了如何将选项卡监听器设置为一个动作条的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图做一个布局选项卡在Android上,我尝试添加标签吨操作栏,但它不工作。我probleme是,在功能 setTabListener((android.app.ActionBar.TabListener)动作条))的这一步; ,错误日志说,不能转换为android.app.ActionBar $ TabListener 。我已经设定 setTabListener(本),但这个在我的函数参考,以分片,我不知道为什么

这是我的全部功能:

  @TargetApi(Build.VERSION_ codeS.ICE_CREAM_SANDWICH)
@覆盖
公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,
                         捆绑savedInstanceState){
    //充气的布局该片段
    视图V = inflater.inflate(R.layout.fragment_clubs_pagesn,集装箱,FALSE);    //动初始化
    viewPager =(ViewPager)v.findViewById(R.id.pager);
    动作条= getActivity()getActionBar()。
    mAdapter =新TabsPagerAdapter(getFragmentManager());    viewPager.setAdapter(mAdapter);
    actionBar.setHomeButtonEnabled(假);
    //actionBar.setNavigationMode(ActionBarNAVIGATION_MODE_STANDARD);
    //添加标签
    对于(字符串TAB_NAME:标签){
        actionBar.addTab(actionBar.newTab()的setText(TAB_NAME)
                .setTabListener((android.app.ActionBar.TabListener)动作条)); }    / **
     *上刷卡viewpager做出选择相应的标签
     * * /
    viewPager.setOnPageChangeListener(新ViewPager.OnPageChangeListener(){        @覆盖
        公共无效使用onPageSelected(INT位置){
            //上改变页面
            //使受人尊敬的选项卡中选择
            actionBar.setSelectedNavigationItem(位置);
        }        @覆盖
        公共无效onPageScrolled(INT为arg0,ARG1浮球,诠释ARG2){
        }        @覆盖
        公共无效onPageScrollStateChanged(INT为arg0){
        }
    });    返回伏;}


解决方案

  

.setTabListener((android.app.ActionBar.TabListener)动作条)


是错误的,因为动作条剂量不落实监听器,你必须实现监听器片段或你的活动,然后调用例如,在您的片段:

  setTabListener(本);

例如,这是样品code为活动

 公共类MainActivity扩展FragmentActivity实现ActionBar.TabListener {    ViewPager viewPager = NULL;
    @覆盖
    保护无效的onCreate(捆绑savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.activity_main);        最后的动作条动作条= getActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        addTabs(动作条);
        }
    私人无效addTabs(ActionBar的动作条)
    {
        ActionBar.Tab TAB1 = actionBar.newTab();
        tab1.setText(标签1);
        tab1.setTabListener(本);        ActionBar.Tab TAB2 = actionBar.newTab();
        tab2.setText(表2);
        tab2.setTabListener(本);        ActionBar.Tab TAB3 = actionBar.newTab();
        tab3.setText(标签3);
        tab3.setTabListener(本);        actionBar.addTab(TAB1);
        actionBar.addTab(TAB2);
        actionBar.addTab(TAB3);
    }    @覆盖
    公共无效onTabSelected(ActionBar.Tab选项卡,FragmentTransaction英尺){    }    @覆盖
    公共无效onTabUnselected(ActionBar.Tab选项卡,FragmentTransaction英尺){    }    @覆盖
    公共无效onTabReselected(ActionBar.Tab选项卡,FragmentTransaction英尺){    }
}}

更新:

 为(字符串TAB_NAME:标签){
        actionBar.addTab(actionBar.newTab()的setText(TAB_NAME)
                .setTabListener(YourFragment.this); }

i'm trying to do a Tab Layout on android, and i'm trying to add tab ton the action bar but its not working. My probleme is that in this step of the function setTabListener((android.app.ActionBar.TabListener) actionBar));, the error log said that cannot be cast to android.app.ActionBar$TabListener. I have already set setTabListener(this) but this in my function refere to the Fragment and i don't know why.

This is my whole function :

@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View v = inflater.inflate(R.layout.fragment_clubs_pagesn, container, false);

    // Initilization
    viewPager = (ViewPager) v.findViewById(R.id.pager);
    actionBar = getActivity().getActionBar();
    mAdapter = new TabsPagerAdapter(getFragmentManager());

    viewPager.setAdapter(mAdapter);
    actionBar.setHomeButtonEnabled(false);
    //actionBar.setNavigationMode(ActionBarNAVIGATION_MODE_STANDARD);
    // Adding Tabs
    for (String tab_name : tabs) {
        actionBar.addTab(actionBar.newTab().setText(tab_name)
                .setTabListener((android.app.ActionBar.TabListener) actionBar)); }

    /**
     * on 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) {
        }
    });

    return v;

}

解决方案

.setTabListener((android.app.ActionBar.TabListener) actionBar)

is wrong because actionBar dose not implement listener, you must implement thelistener in your fragment or in your activity and then call for example in your fragment:

setTabListener(this);

for example this is sample code for activity:

public class MainActivity extends FragmentActivity implements ActionBar.TabListener {

    ViewPager viewPager=null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final ActionBar actionBar=getActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        addTabs(actionBar);


        }
    private void addTabs(ActionBar actionBar)
    {
        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);
    }

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

    }

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

    }

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

    }
}

}

Update:

for (String tab_name : tabs) {
        actionBar.addTab(actionBar.newTab().setText(tab_name)
                .setTabListener(YourFragment.this); }

这篇关于如何将选项卡监听器设置为一个动作条的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆