ActionBar详解(五)--->利用ActionBar结合Fragment实现Tab导航
发布日期:2021-06-30 11:13:51
浏览次数:2
分类:技术文章
本文共 3098 字,大约阅读时间需要 10 分钟。
MainActivity如下:
package cc.testsimpleactionbar4;import android.os.Bundle;import android.app.ActionBar;import android.app.Activity;import android.app.ActionBar.Tab;import android.app.ActionBar.TabListener;import android.app.FragmentTransaction;/** * Demo描述: * 利用ActionBar结合Fragment实现Tab导航. * 当选中不同的Tab时利用Fragment显示不同的内容 * * 参考资料: * 1 Android疯狂讲义(第二版) * Thank you very much * */public class MainActivity extends Activity { private ActionBar mActionBar; private final static String SELECTED_TAB_INDEX="selected_tab"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); initActionBar(); } private void initActionBar(){ mActionBar=getActionBar(); //设置导航方式为Tab mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); Tab tab1=mActionBar.newTab(); tab1.setText("第一页"); tab1.setTabListener(new TabListenerImpl()); mActionBar.addTab(tab1); Tab tab2=mActionBar.newTab(); tab2.setText("第二页"); tab2.setTabListener(new TabListenerImpl()); mActionBar.addTab(tab2); Tab tab3=mActionBar.newTab(); tab3.setText("第三页"); tab3.setTabListener(new TabListenerImpl()); mActionBar.addTab(tab3); } private class TabListenerImpl implements TabListener{ @Override public void onTabReselected(Tab arg0, FragmentTransaction arg1) { } @Override public void onTabSelected(Tab tab, FragmentTransaction transaction) { System.out.println(" onTabSelected "); TestFragment testFragment=new TestFragment(); Bundle bundle=new Bundle(); bundle.putString(TestFragment.KEY, "这是第"+(tab.getPosition()+1)+"个Tab"); testFragment.setArguments(bundle); FragmentTransaction fragmentTransaction=getFragmentManager().beginTransaction(); fragmentTransaction.replace(R.id.relativeLayoutContainer, testFragment); fragmentTransaction.commit(); } @Override public void onTabUnselected(Tab arg0, FragmentTransaction arg1) { } } //以下处理横竖屏的切换 //将当前选中的Tab页的索引保存到Bundle中 @Override protected void onSaveInstanceState(Bundle bundle) { super.onSaveInstanceState(bundle); bundle.putInt(SELECTED_TAB_INDEX, mActionBar.getSelectedNavigationIndex()); } //获取已经保存的被选中Tab页的索引,且设置ActionBar. //setSelectedNavigationItem()方法会调用onTabSelected() @Override protected void onRestoreInstanceState(Bundle bundle) { super.onRestoreInstanceState(bundle); mActionBar.setSelectedNavigationItem(bundle.getInt(SELECTED_TAB_INDEX)); }}
TestFragment如下:
package cc.testsimpleactionbar4;import android.app.Fragment;import android.os.Bundle;import android.view.Gravity;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;public class TestFragment extends Fragment { public static final String KEY="key"; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { TextView textView=new TextView(getActivity()); textView.setGravity(Gravity.CENTER); Bundle bundle=this.getArguments(); String content=bundle.getString(KEY); textView.setText(content); textView.setTextSize(30); return textView; }}main.xml如下:
转载地址:https://it9527.blog.csdn.net/article/details/12526675 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
表示我来过!
[***.240.166.169]2024年04月22日 17时36分02秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【工具使用】CSDN编辑器markdown字体、颜色与字号的设置
2019-04-30
【NLP学习笔记】词共现矩阵
2019-04-30
【NLP学习笔记】NLP基础知识框架图
2019-04-30
【深度学习笔记】卷积的输入输出的通道、维度或尺寸变化过程
2019-04-30
【NLP学习笔记】训练集、验证集和测试集的概念及划分
2019-04-30
【NLP学习笔记】conda换源
2019-04-30
【深度学习笔记】标准卷积
2019-04-30
【深度学习笔记】组卷积
2019-04-30
【深度学习笔记】循环神经网络和递归神经网络区别
2019-04-30
【学习笔记】英文科技论文常见英语句式积累
2019-04-30
【深度学习笔记】PixelShuffle
2019-04-30
【python3学习笔记】斜杠和双斜杠运算符的区别
2019-04-30
【深度学习笔记】用torch.nn.Sequential()搭建神经网络模型
2019-04-30
【深度学习笔记】用torch.nn.ModuleList搭建神经网络
2019-04-30
【深度学习笔记】pytorch的点乘(dot product)
2019-04-30