package com.example.actionbar; import android.app.Fragment; import android.os.Bundle; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; /** * 项目名称/版本号:Actionbar/v1.0 * 包 名:com.example.actionbar * 类描述:实现一个简单的Fragment,即只显示一个TextView组件 * 创建人:jiangdongguo * 创建时间:2015-6-12 下午9:42:35 * 博客地址:http://blog.csdn.net/u012637501 */ public class mFragment extends Fragment { public static final String ARG_TEXT_DATA="text_data"; //Bundle所需的键值 /** * 该方法的返回值就是该Fragment显示的View组件 * */ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { TextView textView = new TextView(getActivity()); textView.setGravity(Gravity.START); textView.setScrollContainer(true); //a.获取创建该Fragment时传入的参数Bundle Bundle bundle = getArguments(); //b.将传入的数据显示到 textView.setText(bundle.getString(ARG_TEXT_DATA)); //c.返回该view return textView; } }
package com.example.actionbar; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import org.textmining.text.extraction.WordExtractor; import android.app.ActionBar; import android.app.ActionBar.Tab; import android.app.Activity; import android.app.Fragment; import android.app.FragmentTransaction; import android.content.res.AssetManager; import android.os.Bundle; import android.os.Environment; /** * 项目名称/版本号:Actionbar/v1.0 * 包 名:com.example.actionbar * 类描述: * 创建人:jiangdongguo * 创建时间:2015-6-12 下午9:29:17 * 博客地址:http://blog.csdn.net/u012637501 */ public class MainActivity extends Activity implements ActionBar.TabListener { private static final String SELECTION_ITEM = "select_item"; // private AssetManager assetManager = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //a.如果程序正确启用了活动条,将会返回一个ActionBar对象,否则返回null ActionBar actionBar = getActionBar(); //b.设置ActionBar的导航方式,即Tab导航 actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); //c.依次添加三个Tab页,并为三个Tab标签添加事件监听器 actionBar.addTab(actionBar.newTab().setText("林俊杰").setTabListener(this)); actionBar.addTab(actionBar.newTab().setText("中国").setTabListener(this)); actionBar.addTab(actionBar.newTab().setText("赵文卓").setTabListener( this)); } @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { if(savedInstanceState.containsKey(SELECTION_ITEM)){ //选中前面保存的索引对应的Fragment页 getActionBar().setSelectedNavigationItem(savedInstanceState.getInt(SELECTION_ITEM)); } } @Override protected void onSaveInstanceState(Bundle outState) { //将当前选中的Fragment也的索引保存到Bundle中 outState.putInt(SELECTION_ITEM, getActionBar().getSelectedNavigationIndex()); } /** * 方法名(重载):onTabSelected * 功能描述:当指定Tab被选中时激发该方法.在该方法中根据用户选中的Tab标签替换新的Fragment * Date :2015-6-12[J] */ @Override public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) { AssetManager assetManager = getResources().getAssets(); //获取assets资源对象 InputStream inputStream = null; WordExtractor extractor = null; //a.创建一个新的Fragment对象 Fragment fragment = new mFragment(); //b.创建一个Bundle对象,用于向Fragment传入参数(数据) Bundle bundle = new Bundle(); try { if(tab.getPosition()==0){ inputStream = assetManager.open("linjunjie.txt"); //获得资产文件对应的输入流 }else if(tab.getPosition()==1){ inputStream = assetManager.open("china.txt"); //获得资产文件对应的输入流 } int length = inputStream.available();//得到输入流所包含的字节总数 byte[] buffer = new byte[length]; //创建一个缓存字节数组 inputStream.read(buffer); //将输入流数据读入到字节数组中 bundle.putString(mFragment.ARG_TEXT_DATA, new String(buffer, "GB2312")); //将字节数组数据转换为字符串,保存到Bundle对象中 inputStream.close(); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } //c.向fragment传入数据 fragment.setArguments(bundle); //d.获取FragmentTransaction对象 FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction(); //c.使用fragment代替该Activity中的containner组件 fragmentTransaction.replace(R.id.mContainer, fragment); //d.提交事物 fragmentTransaction.commit(); } @Override public void onTabUnselected(Tab tab, FragmentTransaction ft) { } @Override public void onTabReselected(Tab tab, FragmentTransaction ft) { } }
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/mContainer" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"/>
package com.example.actionbar; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import org.textmining.text.extraction.WordExtractor; import android.app.ActionBar; import android.app.ActionBar.OnNavigationListener; import android.app.ActionBar.Tab; import android.app.Activity; import android.app.Fragment; import android.app.FragmentTransaction; import android.content.res.AssetManager; import android.os.Bundle; import android.os.Environment; import android.widget.ArrayAdapter; /** * 项目名称/版本号:Actionbar/v1.0 * 包 名:com.example.actionbar * 类描述: * 创建人:jiangdongguo * 创建时间:2015-6-12 下午9:29:17 * 博客地址:http://blog.csdn.net/u012637501 */ public class MainActivity extends Activity implements ActionBar.TabListener, OnNavigationListener { private static final String SELECTION_ITEM = "select_item"; // private AssetManager assetManager = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //a.如果程序正确启用了活动条,将会返回一个ActionBar对象,否则返回null ActionBar actionBar = getActionBar(); //设置ActionBar是否显示标题 actionBar.setDisplayShowTitleEnabled(true); //设置导航模式,使用List导航 actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); //为actionBar添加ArrayAdapter actionBar.setListNavigationCallbacks(new ArrayAdapter<String>( MainActivity.this, android.R.layout.simple_list_item_1, android.R.id.text1, new String[] { "林俊杰", "中国", "赵文卓" }), this); } @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { if(savedInstanceState.containsKey(SELECTION_ITEM)){ //选中前面保存的索引对应的Fragment页 getActionBar().setSelectedNavigationItem(savedInstanceState.getInt(SELECTION_ITEM)); } } @Override protected void onSaveInstanceState(Bundle outState) { //将当前选中的Fragment也的索引保存到Bundle中 outState.putInt(SELECTION_ITEM, getActionBar().getSelectedNavigationIndex()); } /** * 方法名(重载):onNavigationItemSelected * 功能描述:当指定Item被选中时激发该方法.在该方法中根据用户选中的Tab标签替换新的Fragment * Date :2015-6-13[J] */ @Override public boolean onNavigationItemSelected(int itemPosition, long itemId) { AssetManager assetManager = getResources().getAssets(); //获取assets资源对象 InputStream inputStream = null; WordExtractor extractor = null; //a.创建一个新的Fragment对象 Fragment fragment = new mFragment(); //b.创建一个Bundle对象,用于向Fragment传入参数(数据) Bundle bundle = new Bundle(); try { if(itemPosition==0){ inputStream = assetManager.open("linjunjie.txt"); //获得资产文件对应的输入流 }else if(itemPosition==1){ inputStream = assetManager.open("china.txt"); //获得资产文件对应的输入流 } int length = inputStream.available();//得到输入流所包含的字节总数 byte[] buffer = new byte[length]; //创建一个缓存字节数组 inputStream.read(buffer); //将输入流数据读入到字节数组中 bundle.putString(mFragment.ARG_TEXT_DATA, new String(buffer, "GB2312")); //将字节数组数据转换为字符串,保存到Bundle对象中 inputStream.close(); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } //c.向fragment传入数据 fragment.setArguments(bundle); //d.获取FragmentTransaction对象 FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction(); //c.使用fragment代替该Activity中的containner组件 fragmentTransaction.replace(R.id.mContainer, fragment); //d.提交事物 fragmentTransaction.commit(); return true; } }
原文地址:http://blog.csdn.net/u012637501/article/details/46489197