示例图
一、Fragment页面状态保存方式。
方法:在每个Fragment中的onCreateView()方法写关键代码如下。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
/** 当前fragment的view */
if (rootView != null) {
/*
* 缓存的rootView需要判断是否已经被加过parent,
* 如果有parent需要从parent删除,要不然会发生这个rootview已经有parent的错误。
*/
ViewGroup parent = (ViewGroup) rootView.getParent();
if (parent != null) {
parent.removeView(rootView);
}
return rootView;
}
/* 之前没有创建过View,开始填充view并设置相关子控件 */
rootView = inflater.inflate(R.layout.fragment_first, null);
return rootView;
}二、解决重新跳转回含有若干个Fragment的Activity时,指定显示第几个Fragment。
步骤1:在AndroidManifest.xml文件写,设置单例属性
<!-- 首页 -->
<activity
android:name="com.camore.activity.MainActivity"
android:launchMode="singleTask" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>步骤2:在Activity中设置Intent跳转时要走的onNewIntent方法。
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
int index = intent.getIntExtra("index", 0);
((RadioButton) radio_group.getChildAt(index)).setChecked(true);
}
三、实现底部首页四个按钮的Fragment避免重复创建对象方法。
方法:在四个单选按钮的OnCheckedChangeListener中添加如下代码。
/* 设置跳转那个fragment页面 */
Fragment mFragment = fragmentManager
.findFragmentByTag(titleArr[switchid]);
FragmentTransaction fragmentTransaction = fragmentManager
.beginTransaction();
if (mFragment != null) {
fragmentTransaction.detach(mFragment);
}
if (mFragment != null) {
fragmentTransaction.attach(mFragment);
} else {
switch (switchid) {
case 0:
mFragment = new FirstFragment();
break;
case 1:
mFragment = new ConsultFragment();
break;
case 2:
mFragment = new ShopFragment();
break;
case 3:
mFragment = new MyFragment();
break;
}
fragmentTransaction.add(R.id.tabcontent, mFragment,
titleArr[switchid]);
}
fragmentTransaction.commitAllowingStateLoss();Demo下载地址如下:
http://download.csdn.net/detail/zhongcongxu01/8199993

1024

被折叠的 条评论
为什么被折叠?



