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 }
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 }