如何将选项卡监听器设置为一个动作条 [英] How to set a tab listener to an ActionBar
问题描述
我试图做一个布局选项卡在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 thatcannot be cast to android.app.ActionBar$TabListener
. I have already setsetTabListener(this)
butthis
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 implementlistener
, you must implement thelistener
in yourfragment
or in youractivity
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屋!