actionBar配合碎片使用  初始化actionBar要注意设置actionbar的导航模式

  1 package com.qf.actionbar04_tab;
  2 
  3 import java.io.File;
  4 import java.io.UnsupportedEncodingException;
  5 import java.net.URLEncoder;
  6 
  7 import android.app.ActionBar;
  8 import android.app.ActionBar.Tab;
  9 import android.app.ActionBar.TabListener;
 10 import android.app.Activity;
 11 import android.app.FragmentTransaction;
 12 import android.content.Intent;
 13 import android.net.Uri;
 14 import android.os.Bundle;
 15 import android.util.Log;
 16 import android.view.Menu;
 17 import android.view.MenuItem;
 18 
 19 /**
 20  * 使用ActionBar的Tab导航
 21  * 1)设置ActionBar的导航的模式为TABS
 22  * 2)当前Activity实现ActionBar.TabListener接口(Tab的选择与取消选择等事件)
 23  * 3)通过ActionBar类对象的newTab() 创建Tab选项卡,同时设置显示的标题和事件监听
 24  * 4)通过ActionBAr类对象的addTab()方法,将创建的Tab增加到ActionBar中
 25  * 5)在Tab选择事件方法中,动态地显示Fragment
 26  * 
 27  * @author apple
 28  *
 29  */
 30 public class MainActivity extends Activity implements TabListener{
 31 
 32     private ActionBar actionBar;
 33     @Override
 34     protected void onCreate(Bundle savedInstanceState) {
 35         super.onCreate(savedInstanceState);
 36         setContentView(R.layout.activity_main);
 37         
 38         initActionBar();
 39     }
 40 
 41     private void initActionBar() {
 42         // TODO 初始化ActionBar中的相关设置
 43         actionBar=getActionBar();//获取ActionBar对象
 44         
 45         //1. 设置ActionBar的导航模式: tab选项卡的导航模式
 46         actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
 47         
 48         //3. 创建Tab
 49         Tab tab1=actionBar.newTab()
 50                          .setText("头条")
 51                          .setIcon(android.R.drawable.ic_menu_add)
 52                          .setTabListener(this);
 53         
 54         Tab tab2=actionBar.newTab()
 55                  .setText("军事")
 56                  .setIcon(android.R.drawable.ic_menu_agenda)
 57                  .setTabListener(this);
 58         
 59         Tab tab3=actionBar.newTab()
 60                  .setText("国内")
 61                  .setIcon(android.R.drawable.ic_menu_delete)
 62                  .setTabListener(this);
 63         
 64         Tab tab4=actionBar.newTab()
 65                  .setText("国际")
 66                  .setIcon(android.R.drawable.ic_menu_camera)
 67                  .setTabListener(this);
 68         
 69         Tab tab5=actionBar.newTab()
 70                  .setText("体育")
 71                  .setIcon(android.R.drawable.ic_menu_compass)
 72                  .setTabListener(this);
 73         
 74         //4. 增加Tab到ActionBar中
 75         actionBar.addTab(tab1);
 76         actionBar.addTab(tab2);
 77         actionBar.addTab(tab3);
 78         actionBar.addTab(tab4);
 79         actionBar.addTab(tab5);
 80     }
 81 
 82     @Override
 83     public void onTabSelected(Tab tab, FragmentTransaction ft) {
 84         // TODO 选择Tab事件
 85         Log.i("info", "onTabSelected-----"+tab.getPosition());
 86         
 87         ContentFragment cf=
 88                 ContentFragment.newInstace(tab.getText().toString());
 89         
 90         ft.replace(R.id.mainLayoutId, cf);
 91         
 92     }
 93 
 94     @Override
 95     public void onTabUnselected(Tab tab, FragmentTransaction ft) {
 96         // TODO 取消选择Tab事件
 97         Log.i("info", "onTabUnselected-----"+tab.getPosition());
 98     }
 99 
100     @Override
101     public void onTabReselected(Tab tab, FragmentTransaction ft) {
102         // TODO 重新选择Tab事件
103         Log.i("info", "onTabReselected-----"+tab.getPosition());
104         
105     }
106     
107     @Override
108     public boolean onCreateOptionsMenu(Menu menu) {
109         getMenuInflater().inflate(R.menu.main, menu);
110         return super.onCreateOptionsMenu(menu);
111     }
112     
113     @Override
114     public boolean onOptionsItemSelected(MenuItem item) {
115         if(item.getItemId()==R.id.action_share){
116             
117             try {
118                 String info="给您推荐一本新的学习资料:http://www.baidu.com/"
119                         +URLEncoder.encode("Android5.0大全","utf-8"); 
120                 //说明:使用URLEncoder工具类,将url请求中包含中文的信息转化unicode编码
121                 
122                 Intent intent=new Intent(Intent.ACTION_SEND);
123                 intent.setType("text/*"); //设置分享的内容类型为文本类型
124 //                File imgFile=null;
125 //                intent.setDataAndType(Uri.parse(imgFile.getAbsolutePath()), "image/*");
126                 intent.putExtra(Intent.EXTRA_TEXT, info);//设置分享的内容
127                 
128                 startActivity(intent);//开始分享
129                 
130             } catch (UnsupportedEncodingException e) {
131                 e.printStackTrace();
132             }
133             
134             
135         }
136         return super.onOptionsItemSelected(item);
137     }
138     
139 }
mainactivity
 1 import android.app.ListFragment;
 2 import android.os.Bundle;
 3 import android.view.View;
 4 import android.widget.ArrayAdapter;
 5 import android.widget.ListView;
 6 
 7 public class ContentFragment extends ListFragment {
 8 
 9     private String title; //传入当前Fragment中的参数
10     
11     private ArrayAdapter<String> adapter;
12     
13     //声明静态工厂方法
14     public static ContentFragment newInstace(String title){
15         
16         ContentFragment cf=new ContentFragment();
17         Bundle args=new Bundle();
18         args.putString("title",title);
19         
20         cf.setArguments(args);//设置要传入Fragment中的参数
21         
22         return cf;
23     }
24     
25     @Override
26     public void onCreate(Bundle savedInstanceState) {
27         super.onCreate(savedInstanceState);
28         
29         //获取传入的参数
30         title=getArguments().getString("title");
31         
32         adapter=new ArrayAdapter<String>(getActivity().getApplicationContext(),
33                     R.layout.item_content);
34         
35         //初始化数据源
36         for(int i=0;i<20;i++)
37             adapter.add(title+"--"+i);
38         
39     }
40     
41     @Override
42     public void onActivityCreated(Bundle savedInstanceState) {
43         // TODO 归属的Activity的onCreate()初始化方法执行完成
44         super.onActivityCreated(savedInstanceState);
45         
46         //设置当前Fragment中ListView控件的适配器
47         setListAdapter(adapter);
48     }
49     
50     @Override
51     public void onListItemClick(ListView l, View v, int position, long id) {
52         // TODO ListView中的Item点击事件方法
53         //设置当前归属Activity的标题为点击item的内容
54         
55         getActivity().setTitle(adapter.getItem(position));
56     }
57     
58 }
ConmtentFragment

 

posted on 2015-09-19 21:24  毕哥  阅读(168)  评论(0编辑  收藏  举报