Fragment的碎片化

一: 要实现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布局,也是结合百度、书一点一点写出来,上面所注释的疑惑还未解决,谁知道的,可以共享一下哦!

   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值