您的位置:首页 > 其它

fragment的模板

2015-11-04 15:18 337 查看
模板一:

public class MainActivity extends FragmentActivity implements View.OnClickListener{

private RelativeLayout mRlTab1,mRlTab2,mRlTab3,mRlTab4;
private ImageView mIvTab1,mIvTab2,mIvTab3,mIvTab4;
private TextView mTvTab1,mTvTab2,mTvTab3,mTvTab4;

private FragmentManager manager;
private Fragment IndexFragment,MagFragment,NewsFragment,MeFragment;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

initView();
initEvent();

setTabSelect(0);
}

private void initView(){
mRlTab1=(RelativeLayout)findViewById(R.id.rl_tab1);
mRlTab2=(RelativeLayout)findViewById(R.id.rl_tab2);
mRlTab3=(RelativeLayout)findViewById(R.id.rl_tab3);
mRlTab4=(RelativeLayout)findViewById(R.id.rl_tab4);

mTvTab1=(TextView)findViewById(R.id.tv_tab1);
mTvTab2=(TextView)findViewById(R.id.tv_tab2);
mTvTab3=(TextView)findViewById(R.id.tv_tab3);
mTvTab4=(TextView)findViewById(R.id.tv_tab4);

mIvTab1=(ImageView)findViewById(R.id.iv_tab1);
mIvTab2=(ImageView)findViewById(R.id.iv_tab2);
mIvTab3=(ImageView)findViewById(R.id.iv_tab3);
mIvTab4=(ImageView)findViewById(R.id.iv_tab4);

}

private void initEvent(){
mRlTab1.setOnClickListener(this);
mRlTab2.setOnClickListener(this);
mRlTab3.setOnClickListener(this);
mRlTab4.setOnClickListener(this);
}

@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.rl_tab1:
setTabSelect(0);
break;
case R.id.rl_tab2:
setTabSelect(1);

break;
case R.id.rl_tab3:
setTabSelect(2);

break;
case R.id.rl_tab4:
setTabSelect(3);
break;
default:
break;
}
}

public void setTabSelect(int i) {
FragmentManager manager=getSupportFragmentManager();
FragmentTransaction transaction=manager.beginTransaction();

resetTab();
switch (i) {
case 0:
IndexFragment=manager.findFragmentByTag("TAG1");
hideTab(transaction);
if (IndexFragment == null){
IndexFragment = new IndexTabFragment();
transaction.add(R.id.content, IndexFragment,"TAG1");
} else{
transaction.show(IndexFragment);
}
Log.i("MainActivity","IndexFragment:"+IndexFragment.toString());
mIvTab1.setImageResource(R.drawable.index_s);
mTvTab1.setTextColor(getResources().getColor(R.color.tab_text_press));
mRlTab1.setBackgroundColor(getResources().getColor(R.color.tab_select_back));
break;
case 1:
MagFragment=manager.findFragmentByTag("TAG2");
hideTab(transaction);
if (MagFragment == null){
MagFragment = new MagTabFragment();
transaction.add(R.id.content, MagFragment,"TAG2");
} else{
transaction.show(MagFragment);
}
Log.i("MainActivity","MagFragment:"+MagFragment.toString());
mIvTab2.setImageResource(R.drawable.magzine_s);
mTvTab2.setTextColor(getResources().getColor(R.color.tab_text_press));
mRlTab2.setBackgroundColor(getResources().getColor(R.color.tab_select_back));
break;
case 2:
NewsFragment=manager.findFragmentByTag("TAG3");
hideTab(transaction);
if (NewsFragment == null){
NewsFragment = new NewsTabFragment();
transaction.add(R.id.content, NewsFragment,"TAG3");
} else{
transaction.show(NewsFragment);
}
Log.i("MainActivity","NewsFragment:"+NewsFragment.toString());
mIvTab3.setImageResource(R.drawable.picture_s);
mTvTab3.setTextColor(getResources().getColor(R.color.tab_text_press));
mRlTab3.setBackgroundColor(getResources().getColor(R.color.tab_select_back));
break;
case 3:
MeFragment=manager.findFragmentByTag("TAG4");
hideTab(transaction);
if (MeFragment == null){
MeFragment = new MeTabFragment();
transaction.add(R.id.content, MeFragment,"TAG4");
} else{
transaction.show(MeFragment);
}
Log.i("MainActivity","MeFragment:"+MeFragment.toString());
mIvTab4.setImageResource(R.drawable.me_s);
mTvTab4.setTextColor(getResources().getColor(R.color.tab_text_press));
mRlTab4.setBackgroundColor(getResources().getColor(R.color.tab_select_back));
break;
default:

break;
}
transaction.commit();

}

private void resetTab(){
mRlTab1.setBackgroundColor(getResources().getColor(R.color.tab_back));
mRlTab2.setBackgroundColor(getResources().getColor(R.color.tab_back));
mRlTab3.setBackgroundColor(getResources().getColor(R.color.tab_back));
mRlTab4.setBackgroundColor(getResources().getColor(R.color.tab_back));

mIvTab1.setImageResource(R.drawable.index);
mIvTab2.setImageResource(R.drawable.magzine);
mIvTab3.setImageResource(R.drawable.picture);
mIvTab4.setImageResource(R.drawable.me);

mTvTab1.setTextColor(getResources().getColor(R.color.tab_text));
mTvTab2.setTextColor(getResources().getColor(R.color.tab_text));
mTvTab3.setTextColor(getResources().getColor(R.color.tab_text));
mTvTab4.setTextColor(getResources().getColor(R.color.tab_text));
}

private void hideTab(FragmentTransaction transaction){
if (IndexFragment != null)
{
transaction.hide(IndexFragment);
}
if (MagFragment != null)
{
transaction.hide(MagFragment);
}
if (NewsFragment != null)
{
transaction.hide(NewsFragment);
}
if (MeFragment != null)
{
transaction.hide(MeFragment);
}
}

@Override
protected void onSaveInstanceState(Bundle outState) {
//        super.onSaveInstanceState(outState);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

}

这个模块应该说蛮好,蛮简单,清晰

模块二:

/**
* 整个程序最底层的框架Activity,所有的Fragment都是依赖于此Activity而存在的
*
* @author dell
*
*/
public class Main_FA extends FragmentActivity implements OnClickListener, IBtnCallListener {

//新版本长度只有3个
private ImageView[] bt_menu = new ImageView[3];
// 界面底部的菜单按钮id
private int[] bt_menu_id = { R.id.iv_menu_0,R.id.iv_menu_2,R.id.iv_menu_4 };
// 界面底部的选中菜单按钮资源
private int[] select_on = { R.drawable.guide_home_on,R.drawable.guide_discover_on,R.drawable.guide_account_on };
// 界面底部的未选中菜单按钮资源
private int[] select_off = { R.drawable.bt_menu_0_select,R.drawable.bt_menu_2_select,R.drawable.bt_menu_4_select };

/** 主界面 */
private Home_New_F home_F;
/** 发现界面 */
/** 个人中心界面 */
private User_F user_F;
//全局变量 存放用户id
private CacheFunction cacheFunction;//操作缓存
private String uid;
private String utype;

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_fa);
MyApplication.getInstance().addActivity(this);
cacheFunction = new CacheFunction(this);
initView();
//软件自动检测更新
UpdateApp update = new UpdateApp(this);
update.update();
}

// 初始化组件
private void initView() {
// 找到底部菜单的按钮并设置监听
for (int i = 0; i < bt_menu.length; i++) {
bt_menu[i] = (ImageView) findViewById(bt_menu_id[i]);
bt_menu[i].setOnClickListener(this);
}

// 初始化默认显示的界面
if (home_F == null) {
home_F = new Home_New_F();
addFragment(home_F);
showFragment(home_F);
} else {
showFragment(home_F);
}
// 设置默认首页为点击时的图片
bt_menu[0].setImageResource(select_on[0]);

}

@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.iv_menu_0:
// 主界面
if (home_F == null) {
home_F = new Home_New_F();
// 判断当前界面是否隐藏,如果隐藏就进行添加显示,false表示显示,true表示当前界面隐藏
addFragment(home_F);
showFragment(home_F);
} else {
if (home_F.isHidden()) {
showFragment(home_F);
}
}

break;
case R.id.iv_menu_2:
// 发现界面
if (discover_F == null) {
discover_F = new Discover_F();
// 判断当前界面是否隐藏,如果隐藏就进行添加显示,false表示显示,true表示当前界面隐藏
if (!discover_F.isHidden()) {
addFragment(discover_F);
showFragment(discover_F);
}
} else {
if (discover_F.isHidden()) {
showFragment(discover_F);
}
}

break;
}

// 设置按钮的选中和未选中资源
// 这个地方相当的不好,有错误
for (int i = 0; i < bt_menu.length; i++) {
bt_menu[i].setImageResource(select_off[i]);
if (v.getId() == bt_menu_id[i]) {
bt_menu[i].setImageResource(select_on[i]);
}
}
}

/** 添加Fragment **/
public void addFragment(Fragment fragment) {
FragmentTransaction ft = this.getSupportFragmentManager().beginTransaction();
ft.add(R.id.show_layout, fragment);
ft.commit();
}

/** 删除Fragment **/
public void removeFragment(Fragment fragment) {
FragmentTransaction ft = this.getSupportFragmentManager().beginTransaction();
ft.remove(fragment);
ft.commit();
}

/** 显示Fragment **/
public void showFragment(Fragment fragment) {
FragmentTransaction ft = this.getSupportFragmentManager().beginTransaction();
// 设置Fragment的切换动画
ft.setCustomAnimations(R.anim.cu_push_right_in, R.anim.cu_push_left_out);

// 判断页面是否已经创建,如果已经创建,那么就隐藏掉
if (home_F != null) {
ft.hide(home_F);
}
if (discover_F != null) {
ft.hide(discover_F);
}

ft.show(fragment);
ft.commitAllowingStateLoss();

}

/** 返回按钮的监听 */
@Override
public void onBackPressed() {
Toast.makeText(this, "点击返回按钮", Toast.LENGTH_SHORT).show();

super.onBackPressed();
}

/** Fragment的回调函数 */
@SuppressWarnings("unused")
private IBtnCallListener btnCallListener;

@Override
public void onAttachFragment(Fragment fragment) {
try {
btnCallListener = (IBtnCallListener) fragment;
} catch (Exception e) {
}

super.onAttachFragment(fragment);
}

/**
* 响应从Fragment中传过来的消息
*/
@Override
public void transferMsg() {
if (home_F == null) {
home_F = new Home_New_F();
addFragment(home_F);
showFragment(home_F);
} else {
showFragment(home_F);
}
}

@Override
protected void onDestroy() {

MyApplication.getInstance().exit();
super.onDestroy();
}

/****************退出分享的功能*********************/
private boolean okToExit =true;
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {

if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN){
if(okToExit){
showback();
}
}

return super.onKeyDown(keyCode, event);
}

private void showback(){
AlertDialog.Builder builder = new Builder(Main_FA.this);
builder.setMessage("");
builder.setTitle("");
builder.setNegativeButton("取消",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
finish();
}
});
builder.setPositiveButton("确定",
new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
shareApp();
}
});
builder.create().show();
}

protected void shareApp() {
// TODO Auto-generated method stub
String title = "分享";
String text = ""
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_SUBJECT, title);
intent.putExtra(Intent.EXTRA_TEXT, text);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(Intent.createChooser(intent, title));
}

}


这个模板我删了一些东西,至于资源文件,那个就自己搞了,

经过测试 这两套模板都不会导致 花屏的问题 仅供大家参考
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: