类似于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. javascript继承之组合继承(三)

    function Father(name) { this.name = name; } Father.prototype.say = function () { return this.name; } ...

  2. 关闭浏览器时的友情提醒jQuery写法

    $(window).bind('beforeunload', function () { return '您确定退出该页面吗?'; }); 支持以下浏览器(对号表示支持,叉号表示不支持.):

  3. Windows10右键添加“在此处打开命令窗口"

    今天跑代码时用到了Powershell,有一个环境变量死活都找不到,无奈只好重新回到cmd命令行测试,结果立马就跑通了.-_-||  由于现在Win10默认右键只有Powershell,所以为了以后方 ...

  4. 小朋友学Python(1):Python简介与编程环境搭建

    一.Python简介 不死Java,不朽C/C++,新贵Python. Python(英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种面向对象的解释型计算机程序设计语言,由荷兰 ...

  5. Xshell批量导入IP地址

    我的xshell被覆盖了~~~结果原来的host没了,很郁闷要一个一个添加,网上找了很长时间在Xshell中批量添加IP的文章,结果都不行. 最后找到了https://blog.netsarang.c ...

  6. IntelliJ IDEA创建maven web项目(IDEA新手适用)

      步骤一:首先先创建一个project,在这里就是创建一个maven的工作空间 步骤二:按照下面的步骤操作就可以了,最后next 首先,选择左边的maven 然后在右边Creater from ar ...

  7. PHP写日志公共类

    Txl_Log.php <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); /** * * * ...

  8. OpenACC 书上的范例代码(Jacobi 迭代),part 1

    ▶ 使用Jacobi 迭代求泊松方程的数值解 ● 原始串行版本,运行时间 2272 ms #include <stdio.h> #include <stdlib.h> #inc ...

  9. js1:根据标签的Id获取value值

    例子:<input id="startDate" name="startDate" value="2015-09-14" class= ...

  10. Mysql 表名大写 找不到表

    原来Linux下的MySQL默认是区分表名大小写的,通过如下设置,可以让MySQL不区分表名大小写:1.用root登录,修改 /etc/my.cnf:2.在[mysqld]节点下,加入一行: lowe ...