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

 更新时间:2017年09月13日 11:20:02   投稿:lqh  
这篇文章主要介绍了Android 中ActionBar+fragment实现页面导航的实例的相关资料,希望通过本文能帮助到大家实现这样的功能,需要的朋友可以参考下

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 ViewPager实现无限循环的实例

    Android ViewPager实现无限循环的实例

    这篇文章主要介绍了Android ViewPager实现无限循环的实例的相关资料,需要的朋友可以参考下
    2017-07-07
  • Android使用DrawerLayout仿QQ6.0双侧滑菜单

    Android使用DrawerLayout仿QQ6.0双侧滑菜单

    这篇文章主要为大家详细介绍了Android使用DrawerLayout仿QQ6.0双侧滑菜单,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • Android实现button居中的方法

    Android实现button居中的方法

    这篇文章主要介绍了Android实现button居中的方法,涉及Android的XML布局技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-09-09
  • Android zxing如何识别反转二维码详解

    Android zxing如何识别反转二维码详解

    这篇文章主要给大家介绍了关于Android zxing如何识别反转二维码的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-09-09
  • Flutter实现资源下载断点续传的示例代码

    Flutter实现资源下载断点续传的示例代码

    在项目开发中,特别是C端的产品,资源下载实现断点续传是非常有必要的。今天我们不讲过多原理的知识,分享下简单实用的资源断点续传
    2022-07-07
  • Android学习小结之Activity保存和恢复状态

    Android学习小结之Activity保存和恢复状态

    这篇文章主要介绍了Activity状态保存和恢复的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-08-08
  • Android LayoutParams使用案例详解

    Android LayoutParams使用案例详解

    这篇文章主要介绍了Android LayoutParams使用案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • Android Notification通知解析

    Android Notification通知解析

    这篇文章主要针对Android Notification通知进行解析,本文主要介绍的是notification通知的使用方法,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • Android仿京东快报无限轮播效果

    Android仿京东快报无限轮播效果

    这篇文章主要为大家详细介绍了Android仿京东快报无限轮播效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06
  • android中RecyclerView自定义分割线实现

    android中RecyclerView自定义分割线实现

    本篇文章主要介绍了android中RecyclerView自定义分割线实现,由于RecyclerView的布局方式多种多样,所以它的分割线也根据布局的不同有所差异,本文只针对LinearLayoutManager线性布局。
    2017-03-03

最新评论