类似于actionBar也是在导航栏里用但是他使用的是menu菜单设置菜单项的AsAction=“always|withText”

本例使用LoaderCallbacks<Cursor>接口回调

使用菜单项

 import java.io.File;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder; import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.app.ActionBar.TabListener;
import android.app.Activity;
import android.app.FragmentTransaction;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem; /**
* 使用ActionBar的Tab导航
* 1)设置ActionBar的导航的模式为TABS
* 2)当前Activity实现ActionBar.TabListener接口(Tab的选择与取消选择等事件)
* 3)通过ActionBar类对象的newTab() 创建Tab选项卡,同时设置显示的标题和事件监听
* 4)通过ActionBAr类对象的addTab()方法,将创建的Tab增加到ActionBar中
* 5)在Tab选择事件方法中,动态地显示Fragment
*
* @author apple
*
*/
public class MainActivity extends Activity implements TabListener{ private ActionBar actionBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); initActionBar();
} private void initActionBar() {
// TODO 初始化ActionBar中的相关设置
actionBar=getActionBar();//获取ActionBar对象 //1. 设置ActionBar的导航模式: tab选项卡的导航模式
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); //3. 创建Tab
Tab tab1=actionBar.newTab()
.setText("头条")
.setIcon(android.R.drawable.ic_menu_add)
.setTabListener(this); Tab tab2=actionBar.newTab()
.setText("军事")
.setIcon(android.R.drawable.ic_menu_agenda)
.setTabListener(this); Tab tab3=actionBar.newTab()
.setText("国内")
.setIcon(android.R.drawable.ic_menu_delete)
.setTabListener(this); Tab tab4=actionBar.newTab()
.setText("国际")
.setIcon(android.R.drawable.ic_menu_camera)
.setTabListener(this); Tab tab5=actionBar.newTab()
.setText("体育")
.setIcon(android.R.drawable.ic_menu_compass)
.setTabListener(this); //4. 增加Tab到ActionBar中
actionBar.addTab(tab1);
actionBar.addTab(tab2);
actionBar.addTab(tab3);
actionBar.addTab(tab4);
actionBar.addTab(tab5);
} @Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
// TODO 选择Tab事件
Log.i("info", "onTabSelected-----"+tab.getPosition()); ContentFragment cf=
ContentFragment.newInstace(tab.getText().toString()); ft.replace(R.id.mainLayoutId, cf); } @Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
// TODO 取消选择Tab事件
Log.i("info", "onTabUnselected-----"+tab.getPosition());
} @Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
// TODO 重新选择Tab事件
Log.i("info", "onTabReselected-----"+tab.getPosition()); } @Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(menu);
} @Override
public boolean onOptionsItemSelected(MenuItem item) {
if(item.getItemId()==R.id.action_share){ try {
String info="给您推荐一本新的学习资料:http://www.baidu.com/"
+URLEncoder.encode("Android5.0大全","utf-8");
//说明:使用URLEncoder工具类,将url请求中包含中文的信息转化unicode编码 Intent intent=new Intent(Intent.ACTION_SEND);
intent.setType("text/*"); //设置分享的内容类型为文本类型
// File imgFile=null;
// intent.setDataAndType(Uri.parse(imgFile.getAbsolutePath()), "image/*");
intent.putExtra(Intent.EXTRA_TEXT, info);//设置分享的内容 startActivity(intent);//开始分享 } catch (UnsupportedEncodingException e) {
e.printStackTrace();
} }
return super.onOptionsItemSelected(item);
} }

MainActivity.java

 import android.app.ListFragment;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView; public class ContentFragment extends ListFragment { private String title; //传入当前Fragment中的参数 private ArrayAdapter<String> adapter; //声明静态工厂方法
public static ContentFragment newInstace(String title){ ContentFragment cf=new ContentFragment();
Bundle args=new Bundle();
args.putString("title",title); cf.setArguments(args);//设置要传入Fragment中的参数 return cf;
} @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); //获取传入的参数
title=getArguments().getString("title"); adapter=new ArrayAdapter<String>(getActivity().getApplicationContext(),
R.layout.item_content); //初始化数据源
for(int i=0;i<20;i++)
adapter.add(title+"--"+i); } @Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO 归属的Activity的onCreate()初始化方法执行完成
super.onActivityCreated(savedInstanceState); //设置当前Fragment中ListView控件的适配器
setListAdapter(adapter);
} @Override
public void onListItemClick(ListView l, View v, int position, long id) {
// TODO ListView中的Item点击事件方法
//设置当前归属Activity的标题为点击item的内容 getActivity().setTitle(adapter.getItem(position));
} }

ContentFragment

 <menu xmlns:android="http://schemas.android.com/apk/res/android" >

     <!-- actionViewClass 设置ActionView控件的UI类 -->
<item
android:id="@+id/action_search"
android:orderInCategory="100"
android:showAsAction="ifRoom"
android:actionViewClass="android.widget.SearchView"
android:title="检索"/> <!-- actionLayout 属性设置自定义ActionView的布局文件 -->
<item
android:id="@+id/action_search_custom"
android:orderInCategory="100"
android:showAsAction="always|collapseActionView"
android:actionLayout="@layout/actionview_search"
android:icon="@android:drawable/ic_menu_agenda"
android:title="自定义检索"/> </menu>

menu_main

注意这里使用的碎片是ListFragment他可以实现onScrollListener  重写其中的方法 不过最终还得getListView().setOnScrollListener(this);  一般是在onActivityCreated()中实现绑定

actionView的更多相关文章

  1. FATAL: ActionView::Template::Error (application.css isn't precompiled):

    iwangzheng.com tty:[0] jobs:[0] cwd:[/opt/logs/m]13:02 [root@a02.cmsapi$ tail thin\ server\ \(0.0.0. ...

  2. gitlab ActionView::Template::Error (undefined method `[]' for nil:NilClass): 500错误

    Started GET "/mygroup/myproject/tree/master/MyDirectory" for 127.0.0.1 at 2014-10-22 22:42 ...

  3. Android学习笔记ActionView

    概念 案例 1.布局文件 activity_main.xml <?xml version="1.0" encoding="utf-8"?> < ...

  4. Android(2)—Mono For Android App版本自动更新

    0.前言 公司Android查询的项目已经开始,整体采用Java后台+App前台来实现,由于项目小,App这块就我一个人开发,首先需要研究的是:Android版本的更新升级问题:本人经过近一周的学习整 ...

  5. 将语音搜索集成到Google Now中

    原文标题:Use Voice Search to integrate with Google Now 原文链接:http://antonioleiva.com/voice_search_google_ ...

  6. Yii2 基于RESTful架构的 advanced版API接口开发 配置、实现、测试 (转)

    环境配置: 开启服务器伪静态 本处以apache为例,查看apache的conf目录下httpd.conf,找到下面的代码 LoadModule rewrite_module modules/mod_ ...

  7. RubyOnRails local_assigns

    http://api.rubyonrails.org/classes/ActionView/Template.html#method-i-local_assigns Returns a hash wi ...

  8. Rails sanitize

    The SanitizeHelper module provides a set of methods for scrubbing text of undesired HTML elements. T ...

  9. YII 的源码分析(三)

    前面已经看完了启动一个yii程序所要经过的流程,以及渲染一个页面是怎么完成的.今天要分析的是yii是如何处理用户请求的.也就是控制和动作部分. 还是以helloworld为例演示这一过程.我们在地址栏 ...

随机推荐

  1. HTC Vive前置摄像头API(未测试)

    /*WebCamTexture:网络摄像头材质 WebCamTexture.Play() 播放: WebCamTexture.Pause() 暂停: WebCamTexture.Stop() 停止:* ...

  2. Linux内存管理大图(第三稿)

    http://bbs.chinaunix.net/thread-2018659-2-1.html 描述讨论在http://bbs.chinaunix.net/thread-3760371-1-1.ht ...

  3. 搭建 yum 仓库

    翻译来自:https://wiki.centos.org/HowTos/CreateLocalRepos 本地仓库 http 仓库 测试 Steps: 1.把rpm包放在一个目录中.可以根据需要在该目 ...

  4. systemctl管理系统配置、服务

    systemctl daemon-reload \&& systemctl enable docker \&& systemctl start docker \& ...

  5. [ilink32 Error] Error: Unresolved external 'SendARP'

    [ilink32 Error] Error: Unresolved external 'SendARP' referenced from E:\APPOBJ\KSRGETMAC.OBJ #pragma ...

  6. as3 程序域

    问题我要在应用程序中载入其他域的swf文件,并且允许它访问程序中的 ActionScript 解决办法使用flash.system.Security.allowDomain( ), flash.sys ...

  7. chrome 设置是否缓存

    在进行本地开发时,因老需要修改js,css等文件,而页面又带有缓存因此无法自动更新为新的文件. 在页面点击 -> F12 ->F1 ->References -> NetWor ...

  8. Java多线程之使用ATM与柜台对同一账户取钱

    钱数要设置成静态的变量,两种取钱方式操作的是同一个银行账户! 废话不多说,直接上代码.注释写的都很详细!!! package com.thread.multi2; public class Bank ...

  9. <!-- str.startsWith('胡') 检查一个 字符串中是否有某字符 返回true false -->& vh 属性

    1.<!-- str.startsWith('胡')  检查一个 字符串中是否有某字符 返回true false --> 2. vh 分享到选择其它项   复制本页链接 版本:CSS3 补 ...

  10. mysql 存储过程分页 转载

    /* --名称:MYSQL版查询分页存储过程 by peace 2013-8-14 --输入参数:@fields -- 要查询的字段用逗号隔开 --输入参数:@tables -- 要查询的表 --输入 ...