Android 中ActionBar+fragment实现页面导航的实例

发布时间 - 2026-01-11 03:14:22    点击率:

Android 中ActionBar+fragment实现页面导航的实例

为保证android2.0以上均能运行,使用support.v7库下的actionbar及fragment

继承自AppCompatActivity(ActionBarActivity已过时)使用getSupportActionBar()得到ActionBar,

ActionBar.Tab,这里Tab必须设置监听,在监听中实现Fragment的切换。

这里重点提一下,Theme主题一定要适配,因为我使用的是AppCompatActivity所以,

android:theme="@style/Theme.AppCompat.Light" 

如果不用AppCompatActivity一定要注意使用相应的主题适配,否则会getActionBar/getSupportActionbar的时候拿不到东西,空指针报错

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" 
  android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" 
  android:paddingRight="@dimen/activity_horizontal_margin" 
  android:paddingTop="@dimen/activity_vertical_margin" 
  android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> 
 
  <FrameLayout 
    android:id="@+id/context" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"/> 
 
</RelativeLayout> 
package com.example.yasin.actionbarusing; 
 
 
import android.app.Activity; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentTransaction; 
import android.support.v7.app.ActionBar; 
import android.support.v7.app.ActionBarActivity; 
import android.support.v7.app.AppCompatActivity; 
import android.util.Log; 
import android.view.View; 
 
 
public class MainActivity extends AppCompatActivity { 
 
  ActionBar actionBar; 
  @Override 
  protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
 
    actionBar = getSupportActionBar(); 
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
 
    ActionBar.Tab tab1 = actionBar.newTab().setText("Tab1"); 
    tab1.setTabListener(new MyTabListener(new Fragment1())); 
    ActionBar.Tab tab2 = actionBar.newTab().setText("Tab2"); 
    tab2.setTabListener(new MyTabListener(new Fragment2())); 
    actionBar.addTab(tab1); 
    actionBar.addTab(tab2); 
  } 
 
  class MyTabListener implements ActionBar.TabListener{ 
 
    private Fragment fragment; 
    public MyTabListener (Fragment fragment){ 
      this.fragment=fragment; 
    } 
 
 
    @Override 
    public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) { 
      ft.replace(R.id.context,fragment); 
    } 
 
    @Override 
    public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) { 
 
    } 
 
    @Override 
    public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) { 
      //ft.remove(fragment); 
    } 
  } 
 
} 
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  android:layout_width="match_parent" 
  android:layout_height="match_parent"> 
 
  <TextView 
    android:id="@+id/tv1" 
    android:text="fragment1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 
 
</LinearLayout> 


package com.example.yasin.actionbarusing; 
 
import android.os.Bundle; 
import android.support.annotation.Nullable; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
 
/** 
 * Created by Yasin on 2016/1/3. 
 */ 
public class Fragment1 extends Fragment{ 
  @Nullable 
  @Override 
  public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragment1,container,false); 
 
    return view; 
  } 
} 
<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
  package="com.example.yasin.actionbarusing" > 
 
  <application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/Theme.AppCompat.Light" > 
    <activity 
      android:name=".MainActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
        <action android:name="android.intent.action.MAIN" /> 
 
        <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
    </activity> 
  </application> 
 
</manifest> 

效果图:

如有疑问请留言或者到本站社区交流讨论,大家共同进步,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# Android  # 中ActionBar+fragment的应用  # 页面导航的实现  # Android中Activity和Fragment传递数据的两种方式  # Android中Fragment相互切换间不被回收的实现方法  # Android开发中如何解决Fragment +Viewpager滑动页面重复加载的问题  # Android使用TabLayout+Fragment实现顶部选项卡  # Android使用TabLayou+fragment+viewpager实现滑动切换页面效果  # android 中viewpager+fragment仿微信底部TAG完美渐变  # 的是  # 如有  # 希望能  # 报错  # 谢谢大家  # 则会  # 均能  # 共同进步  # 疑问请  # 因为我  # 为保证  # context  # id  # paddingBottom  # FrameLayout  # gt  # MainActivity  # paddingLeft  # dimen  # match_parent 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 浅述节点的创建及常见功能的实现  Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】  Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】  如何快速启动建站代理加盟业务?  Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程  今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】  微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】  Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧  网站制作免费,什么网站能看正片电影?  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  怎样使用JSON进行数据交换_它有什么限制  如何在腾讯云服务器上快速搭建个人网站?  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  如何在万网利用已有域名快速建站?  Win11怎么设置默认图片查看器_Windows11照片应用关联设置  Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析  Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程  EditPlus中的正则表达式实战(5)  今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】  如何在云服务器上快速搭建个人网站?  如何在阿里云域名上完成建站全流程?  Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用  Laravel怎么生成URL_Laravel路由命名与URL生成函数详解  javascript事件捕获机制【深入分析IE和DOM中的事件模型】  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  手机网站制作与建设方案,手机网站如何建设?  敲碗10年!Mac系列传将迎来「触控与联网」双革新  如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环  Laravel PHP版本要求一览_Laravel各版本环境要求对照  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  实例解析Array和String方法  Python自动化办公教程_ExcelWordPDF批量处理案例  活动邀请函制作网站有哪些,活动邀请函文案?  Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  ChatGPT 4.0官网入口地址 ChatGPT在线体验官网  高防服务器租用指南:配置选择与快速部署攻略  Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制  JavaScript如何实现继承_有哪些常用方法  Laravel Octane如何提升性能_使用Laravel Octane加速你的应用  高端智能建站公司优选:品牌定制与SEO优化一站式服务  微信小程序 wx.uploadFile无法上传解决办法  如何用景安虚拟主机手机版绑定域名建站?  Laravel怎么发送邮件_Laravel Mail类SMTP配置教程  Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】  怎么用AI帮你为初创公司进行市场定位分析?  Laravel如何实现一对一模型关联?(Eloquent示例)  瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口  HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?