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