一: 要实现fragment的碎片化,有两种方式,这里,我只举出一种,即在xml中添加fragment
二:此时需要建立三个activity,分别为ListFragment,DetailFragment,TotalFragment,两个xml文件
ListFragment:作为列表
DetalFragment:内容详情
TotalFragment:加载xml
三:ListFragment.java代码
在编写ListFragment代码之前,现在strings.xml里面写一个数组,用来列表显示以及作为内容详情的显示,关键内容如下
<string-array name="titile_list">
<item>偶像来了</item>
<item>奔跑吧,兄弟</item>
<item>快乐大本营</item>
<item>天天向上</item>
<item>琅琊榜</item>
<item>欢乐喜剧人</item>
<item>养乐多</item>
<item>职来职往</item>
</string-array>
<string-array name="text">
<item> 《偶像来了》是2015年湖南卫视出品的女神生活体验秀节目。
节目主持人为何炅、汪涵,嘉宾为全女神阵容林青霞、杨钰莹、朱茵、宁静、蔡少芬、谢娜、
赵丽颖、张含韵、古力娜扎、欧阳娜娜。
</item>
<item>《奔跑吧兄弟》是浙江卫视引进韩国SBS电视台综艺节目《Running Man》推出的大型户外竞
技真人秀节目,由浙江卫视和韩国SBS联合制作,节目前期由韩国团队主导中方配合,之后交
由浙江卫视节目中心俞杭英团队全盘负责</item>
<item>《快乐大本营》是湖南卫视于1997年7月11日起开办的一档综艺性娱乐节目,节目固定每周
六晚20:20分在湖南卫视播出。该节目由何炅、谢娜、李维嘉、杜海涛、吴昕担任主持。节目
以游戏为主,辅以歌舞及各种形式给广大观众带来快乐。</item>
<item>《天天向上》是湖南卫视打造的大型娱乐脱口秀节目,2008年8月4日首播。节目主持阵容由
汪涵、欧弟、钱枫、金恩圣(小五)、俞灏明五位天天兄弟组成。该节目采用全国第一支偶像男
子主持团体的概念。节目氛围欢快轻松幽默,获得高收视率的同时,也受到了广大观众的好评。</item>
<item >《琅琊榜》是根据海宴同名网络小说改编,以平反冤案、扶持明君、振兴山河为主线,讲述了“麒麟才子”梅长苏才冠绝伦、以病弱之躯拨开重重迷雾、智博奸佞,为昭雪多年冤案、扶持新君所进行的一系列斗争。梅长苏在国仇家恨、兄弟情义的漩涡中见招拆招、游刃有余,奏出了“江左梅郎”赤子之心下的一曲慷慨悲歌。</item>
<item >《欢乐喜剧人》是一档由欢乐嘉娱、华录百纳及东方卫视联合打造的全国首档明星喜剧竞赛真人秀节目。该节目由吴秀波担任主持,由贾玲、宋小宝、沈腾、吴君如、刘仪伟、乔杉、修睿等担任参赛选手。通过以喜剧的各种节目样式传递快乐</item>
<item >“Yakult”音译为“养乐多”和“益力多,(这个名称是取自世界语的“Jahurto”,意即酸奶。是一种风靡全球的、每瓶至少含有100亿特殊活性乳酸菌的乳饮品。</item>
<item >《职来职往》是由李响主持的一档职场真人秀节目,于2010年12月10日开始在中国教育电视台一频道开播,该节目是一档帮助求职者正确的对待自己与职场,为多样的职场精英提供就业机会的全国首档大型职场真人秀。</item>
</string-array>
ListFragment.java代码
注意:如果继承ListFragment ,且是通过加载xml的方法布局列表,则在xml中 的listview中的id应该设置为 android:id="@android:id/list",这里我们并没有加载对应的xml,所以 不用管
public class ListFragment extends android.app.ListFragment{
private String[] list; //用来获取strings.xml里面的"titile_list" 的内容
private int curCheckPosition=0;
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
list=this.getResources().getStringArray(R.array.titile_list);
ArrayAdapter<String> adapter=new ArrayAdapter<String>(getActivity(),<span style="color:#FF0000;"> android.R.layout.simple_list_item_1</span>,list);
setListAdapter(adapter);
showDetails(curCheckPosition);
}
void showDetails(int index){
FragmentManager fm=getFragmentManager();
DetailFragment details=(DetailFragment)<span style="color:#FF0000;">fm.findFragmentById</span>(R.id.detailfragment);
if(details==null || details.getShowIndex()!=index);{
details=DetailFragment.newInstance(index);
FragmentTransaction ft=fm.beginTransaction();
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.replace(R.id.detailfragment, details);
ft.commit();
}
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
showDetails(position);
}
}
DetalFragment.java代码
public class DetailFragment extends Fragment{
private TextView tv;
private String[] text; //用来获取strings.xml的“text”数组的内容
public static DetailFragment newInstance(int index){
DetailFragment df=new DetailFragment();
Bundle bundle=new Bundle(); //实例化Bundle对象
bundle.putInt("index",index); //将索引值添加到Bundle对象中
df.setArguments(bundle); //将Bundle对象作为Fragment的参数保存
return df;
}
public int getShowIndex(){
int index=getArguments().getInt("index",0);
return index; //获取要显示的列表项的索引
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
<span style="color:#FF0000;">View view= inflater.inflate(R.layout.activity_detail,container,false);</span>//获取对应的xml布局
text=this.getResources().getStringArray(R.array.text);
tv=(TextView)<span style="color:#FF0000;">view.findViewById</span>(R.id.textView1); //需注意这里获取控件的方法
tv.setText(text[getShowIndex()]);
return view;
}
}
TotalFragment.java代码
public class TotalFragment extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fragment01);
}
}
activity_fragment01.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:baselineAligned="false"
>
<fragment
android:name="com.lss.demo_ui.ListFragment"
android:id="@+id/listfragment"
android:layout_weight="2"
android:layout_width="match_parent"
android:layout_height="fill_parent"/>
<FrameLayout
android:name="com.lss.demo_ui.DetailFragment"
android:id="@+id/detailfragment"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="fill_parent"
></FrameLayout>
//如果第二个Fragment用下面这个标签,程序会崩溃,原因尚未找到,如果有人知道,还希望可以分享一下
<!-- <fragment
android:name="com.lss.demo_ui.DetailFragment"
android:id="@+id/detailfragment"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="fill_parent"
/>
-->
</LinearLayout>
activity_detail.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/bgcolor" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginTop="106dp"
/>
</RelativeLayout>
效果图如下,且点击左侧的列表项,右侧会出现相应的内容详情
以上这个 Demo只是自己写的一个很基础的UI布局,也是结合百度、书一点一点写出来,上面所注释的疑惑还未解决,谁知道的,可以共享一下哦!