您的位置:首页 > 其它

Fragment碎片处理

2016-04-08 09:56 253 查看

fragment

第一次发,废话就不多说了,直接上代码

FragmentActivity

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTransaction;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import java.util.ArrayList;
public class MainActivity extends FragmentActivity {

private LinearLayout AccessInventory_layout;
private LinearLayout Repertory_layout;
private LinearLayout Detail_layout;
private LinearLayout Statistics_layout;
private LinearLayout UserCenter_layout;
private TextView AccessInventory_txt;
private TextView Repertory_txt;
private TextView Detail_txt;
private TextView Statistics_txt;
private TextView UserCenter_txt;
private ArrayList<Fragment> fragments = new ArrayList<Fragment>();
private String fragment_Tag = "accessinventoryFragment";
private int index = 0;

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


/**实例化fragment*/
AccessInventoryFragment accessinventoryFragment = new AccessInventoryFragment(this);
RepertoryFragment repertoryFragment = new RepertoryFragment();
DetailFragment detailFragment = new DetailFragment();
StatisticsFragment statisticsFragment = new StatisticsFragment();
UserCenterFragment usercenterFragment = new UserCenterFragment();

fragments.add(accessinventoryFragment);
fragments.add(repertoryFragment);
fragments.add(detailFragment);
fragments.add(statisticsFragment);
fragments.add(usercenterFragment);

/** 启动时,先展示热门Fragment */
FragmentTransaction transaction = getSupportFragmentManager()
.beginTransaction();
transaction.replace(R.id.main_layout, fragments.get(0),
fragment_Tag);
transaction.commit();


实例化完成之后,我们在开始着手控制底部的导航栏变化

public class MyClick implements View.OnClickListener{
@Override
public void onClick(View v) {
int cur = v.getId();
switch (cur){
case R.id.AccessInventory_layout:
cur = 0;
fragment_Tag = "accessinventoryFragment";
/**在此处添加需要实现事件的逻辑*/
break;
case R.id.Repertory_layout:
cur = 1;
fragment_Tag = "repertoryFragment";
/**在此处添加需要实现事件的逻辑*/
break;
case R.id.Detail_layout:
cur = 2;
fragment_Tag = "detailFragment";
/**在此处添加需要实现事件的逻辑*/
break;
case R.id.Statistics_layout:
cur = 3;
fragment_Tag = "statisticsFragment";
/**在此处添加需要实现事件的逻辑*/
break;
case R.id.UserCenter_layout:
cur = 4;
fragment_Tag = "usercenterFragment";
/**在此处添加需要实现事件的逻辑*/
break;
}
/**
* 判断是否选中的是当前fragment,是则显示,不是则隐藏
*/
if (index != cur) {
index = cur;
if (!fragments.get(cur).isAdded()) {     //未被添加过得fragment
FragmentTransaction transaction = getSupportFragmentManager()
.beginTransaction();
transaction.add(R.id.main_layout, fragments.get(cur),
fragment_Tag);
transaction.commit();
for (int i = 0; i < fragments.size(); i++) {
if (i != cur) {
transaction.hide(fragments.get(i));
} else {
transaction.show(fragments.get(i));
}
}
} else {     //已被添加过得fragment
FragmentTransaction transaction = getSupportFragmentManager()
.beginTransaction();
transaction.commit();
for (int i = 0; i < fragments.size(); i++) {
if (i != cur) {
transaction.hide(fragments.get(i));
} else {
transaction.show(fragments.get(i));
}
}
}
}
}
}


在贴个fragment模块的代码

public class UserCenterFragment extends Fragment {

@ViewInject(R.id.Modify_Password)TextView Modify_Password;
@ViewInject(R.id.Modify_Passwordtwo)TextView Modify_Passwordtwo;

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

View view = inflater.inflate(R.layout.usercenter_fragment, container, false);
ViewUtils.inject(this,view); //注入view和事件
return view;

}


xml模块的代码我就不贴出来了,都比较简单,如果有需要的可以告诉我。

目录

[TOC]
来生成目录:

fragment

FragmentActivity

目录
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: