Android UI详解之Fragment实例详解
来源:互联网 发布:mac的桌面文件在哪里 编辑:程序博客网 时间:2024/05/12 04:40
上一篇我们讲解了Fragment的加载方式,这次我们以一个实例来讲解:
布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" ><fragment class="com.xys.fragmentdemo.TitleFragment" android:id="@+id/titles" android:layout_weight="1" android:layout_width="match_parent" android:layout_height="match_parent" /><FrameLayout android:id="@+id/detials" android:layout_weight="1" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/darker_gray"></FrameLayout></LinearLayout >
以上布局文件中使用了fragment标签和FrameLayout标签。Android Fragment使用 中介绍了2中嵌入Fragment的方法,这个实例中都用到,从布局文件看到有了fragment标签,这是一种使用方法,FrameLayout标签将会成为第二种加载fragment的载体view。
TitleFragment:
package com.xys.fragmentdemo;import android.app.Fragment;import android.app.FragmentTransaction;import android.app.ListFragment;import android.os.Bundle;import android.view.View;import android.widget.ArrayAdapter;import android.widget.ListView;public class TitleFragment extends ListFragment {public int currentChoosePosition=0;public int showChoosePosition=-1;@Overridepublic void onListItemClick(ListView l, View v, int position, long id) {// TODO Auto-generated method stubshowDetials(position);}@Overridepublic void onActivityCreated(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onActivityCreated(savedInstanceState);setListAdapter(new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_activated_1,Data.TitleData));if(savedInstanceState!=null){currentChoosePosition=savedInstanceState.getInt("currentChoose",0);showChoosePosition=savedInstanceState.getInt("showChoose",-1);}getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);}@Overridepublic void onSaveInstanceState(Bundle outState) {// TODO Auto-generated method stubsuper.onSaveInstanceState(outState);outState.putInt("currentChoose", currentChoosePosition);outState.putInt("showChoose", showChoosePosition);}public void showDetials(int index){currentChoosePosition=index;getListView().setItemChecked(index, true);if(showChoosePosition!=currentChoosePosition){//获取详情Fragment的实例DetialFragment df=DetialFragment.newInstance(index);//获取FragmentTransaction 实例FragmentTransaction ft=getFragmentManager().beginTransaction(); //使用DetailsFragment 的实例ft.replace(R.id.detials, df);ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);ft.commit();showChoosePosition=index;}}}
DetialFragment:
package com.xys.fragmentdemo;import android.app.Fragment;import android.content.res.TypedArray;import android.os.Bundle;import android.util.TypedValue;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ScrollView;import android.widget.TextView;//DetailsFragment 中使用newInstance(int index)方法产生DetailsFragment 实例并接受整型参数,重载了onCreateView方法创建viewpublic class DetialFragment extends Fragment {public static DetialFragment newInstance(int index) {// TODO Auto-generated method stubDetialFragment df=new DetialFragment();Bundle bundle=new Bundle();bundle.putInt("index", index);df.setArguments(bundle);return df;}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// TODO Auto-generated method stubif(container==null){return null;}ScrollView scrollView=new ScrollView(getActivity());TextView tv=new TextView(getActivity());int padding=(int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 4, getActivity().getResources().getDisplayMetrics());tv.setPadding(padding, padding, padding, padding);scrollView.addView(tv);tv.setText(Data.ContextData[getArguments().getInt("index",0)]);return scrollView;}}
Data:
package com.xys.fragmentdemo;public class Data {public static final String TitleData[]={"Title1","Title2","Title3","Title4","Title5"};public static final String ContextData[]={"Context1","Context2","Context3","Context4","Context5"};}
国际惯例 上效果图:
- Android UI详解之Fragment实例详解
- Android UI详解之Fragment实例详解
- Android UI详解之Fragment实例详解
- Android UI详解之Fragment实例详解
- Android UI开发详解之Fragment
- Android UI详解之Fragment加载
- Android UI开发详解之Fragment
- Android UI详解之Fragment加载
- Android UI开发详解之Fragment
- Android UI开发详解之Fragment
- Android UI开发详解之Fragment
- Android UI 详解之ActionBar+ViewPager+Fragment 实现滑动Tab
- Android Fragment 全面详解+Fragment应用实例
- Android之fragment介绍及fragment详解
- 【Android基础】Fragment 详解之Fragment介绍
- 【Android基础】Fragment 详解之Fragment生命周期
- Android 开发 之 Fragment 详解
- Android 开发 之 Fragment 详解
- mac系统如何显示和隐藏文件
- linux安装memcached
- 提高PHP代码的性能10条建议
- asp学习入门经验谈
- [科学计算] 安装GNU的开源科学计算库gsl
- Android UI详解之Fragment实例详解
- OOP和Linux内核的一点思考
- POJ1519数字根 问题
- C++第4周项目5 - 数组作数据成员(扩展1动态开辟空间)
- 谱聚类(spectral clustering)
- 调整WebLogic性能优化参数
- Java串口通信详解
- SAP企业移动平台开发探索系列2 – 苹果手机程序多个页面导航的应用
- 从 iBatis 到 MyBatis