Fragment在Activity中的应用指南_第1页
Fragment在Activity中的应用指南_第2页
Fragment在Activity中的应用指南_第3页
Fragment在Activity中的应用指南_第4页
Fragment在Activity中的应用指南_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Fragment在Activity中的应用1创建一个空的Activity我们首先创建一个空的Activity,水平排列。如下所示res/layour/main.xml:<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="horizontal"></LinearLayout>com/fragment/FragmentDemoActivity.java:packagecom.fragment;importandroid.app.Activity;importandroid.os.Bundle;publicclassFragmentDemoActivityextendsActivity{/**Calledwhentheactivityisfirstcreated.*/@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);}}

2创建Fragment我们创建两个Fragment,一个是目录TitlesFragment,一个是详情DetailsFragment。TitlesFragment集成ListFragment,实现目录列表。com/fragment/TitlesFragment.java:packagecom.fragment;importandroid.app.Activity;importandroid.app.AlertDialog;importandroid.app.FragmentTransaction;importandroid.app.ListFragment;importandroid.os.Bundle;importandroid.view.LayoutInflater;importandroid.view.View;importandroid.view.ViewGroup;importandroid.widget.ArrayAdapter;importandroid.widget.ListView;publicclassTitlesFragmentextendsListFragment{staticString[]array;booleanmDualPane;intmCurCheckPosition=0;@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);}@OverridepublicViewonCreateView(LayoutInflaterinflater,ViewGroupcontainer,BundlesavedInstanceState){returnsuper.onCreateView(inflater,container,savedInstanceState);}@OverridepublicvoidonPause(){super.onPause();}@OverridepublicvoidonStop(){super.onStop();}@OverridepublicvoidonAttach(Activityactivity){super.onAttach(activity);}@OverridepublicvoidonStart(){super.onStart();}@OverridepublicvoidonResume(){super.onResume();}@OverridepublicvoidonDestroy(){super.onDestroy();}@OverridepublicvoidonActivityCreated(BundlesavedInstanceState){super.onActivityCreated(savedInstanceState);array=getResources().getStringArray(R.array.countries_array);setListAdapter(newArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1,array));ViewdetailsFrame=getActivity().findViewById(R.id.details);mDualPane=detailsFrame!=null&&detailsFrame.getVisibility()==View.VISIBLE;if(savedInstanceState!=null){mCurCheckPosition=savedInstanceState.getInt("curChoice",0);//从保存的状态中取出数据}if(mDualPane){getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);showDetails(mCurCheckPosition);}}@OverridepublicvoidonSaveInstanceState(BundleoutState){super.onSaveInstanceState(outState);outState.putInt("curChoice",mCurCheckPosition);}@OverridepublicvoidonListItemClick(ListViewl,Viewv,intposition,longid){super.onListItemClick(l,v,position,id);showDetails(mCurCheckPosition);}voidshowDetails(intindex){mCurCheckPosition=index;if(mDualPane){getListView().setItemChecked(index,true);DetailsFragmentdetails=(DetailsFragment)getFragmentManager().findFragmentById(R.id.details);if(details==null||details.getShownIndex()!=index){details=DetailsFragment.newInstance(mCurCheckPosition);//得到一个fragment事务(类似sqlite的操作)FragmentTransactionft=getFragmentManager().beginTransaction();ft.replace(R.id.details,details);ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);mit();//提交}}else{newAlertDialog.Builder(getActivity()).setTitle(android.R.string.dialog_alert_title).setMessage(array[index]).setPositiveButton(android.R.string.ok,null).show();}}}DetailsFragment显示点击某个目录的详情,com/fragment/DetailsFragment.java:packagecom.fragment;importandroid.app.Fragment;importandroid.os.Bundle;importandroid.util.TypedValue;importandroid.view.LayoutInflater;importandroid.view.View;importandroid.view.ViewGroup;importandroid.widget.ScrollView;importandroid.widget.TextView;publicclassDetailsFragmentextendsFragment{staticString[]array;@OverridepublicvoidonCreate(BundlesavedInstanceState){//TODOAuto-generatedmethodstubsuper.onCreate(savedInstanceState);setHasOptionsMenu(true);}publicstaticDetailsFragmentnewInstance(intindex){DetailsFragmentdetails=newDetailsFragment();Bundleargs=newBundle();args.putInt("index",index);details.setArguments(args);returndetails;}publicintgetShownIndex(){returngetArguments().getInt("index",0);}@OverridepublicViewonCreateView(LayoutInflaterinflater,ViewGroupcontainer,BundlesavedInstanceState){//TODOAuto-generatedmethodstubif(container==null)returnnull;array=getResources().getStringArray(R.array.countries_array);ScrollViewscroller=newScrollView(getActivity());/*GridViewgridview=(GridView)getActivity().findViewById(R.id.gridview);gridview.setAdapter(newImageAdapter(getActivity()));gridview.setOnItemClickListener(newOnItemClickListener(){publicvoidonItemClick(AdapterView<?>parent,Viewv,intposition,longid){Toast.makeText(DetailsFragment.this.getActivity(),""+position,Toast.LENGTH_SHORT).show();}});*//*//定义UI组件finalImageViewiv=(ImageView)getActivity().findViewById(R.id.ImageView01);Galleryg=(Gallery)getActivity().findViewById(R.id.Gallery01);//设置图片匹配器g.setAdapter(newImageAdapter(getActivity()));//设置AdapterView点击监听器,Gallery是AdapterView的子类g.setOnItemClickListener(newOnItemClickListener(){@OverridepublicvoidonItemClick(AdapterView<?>parent,Viewview,intposition,longid){//显示点击的是第几张图片Toast.makeText(DetailsFragment.this.getActivity(),""+position,Toast.LENGTH_LONG).show();//设置背景部分的ImageView显示当前Item的图片iv.setImageResource(((ImageView)view).getId());}});*/TextViewtext=newTextView(getActivity());intpadding=(int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,4,getActivity().getResources().getDisplayMetrics());text.setPadding(padding,padding,padding,padding);scroller.addView(text);text.setText(array[getShownIndex()]);/*ButtonbtnContact=(Button)getActivity().findViewById(R.id.bt1);btnContact.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){//TODOAuto-generatedmethodstubIntentintent=newIntent(getActivity(),MainHelloGallery.class);startActivity(intent);}});*/returnscroller;}/*@OverridepublicvoidonCreateOptionsMenu(Menumenu,MenuInflaterinflater){//TODOAuto-generatedmethodstubsuper.onCreateOptionsMenu(menu,inflater);menu.add("Menu1a").setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);menu.add("Menu1b").setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);}@OverridepublicbooleanonOptionsItemSelected(MenuItemitem){//TODOAuto-generatedmethodstubToast.makeText(getActivity(),"indexis"+getShownIndex()+"&&menutextis"+item.getTitle(),1000).show();returnsuper.onOptionsItemSelected(item);}*/}

3将Fragment添加至Activity中此时,已经实现了Activity和两个Fragment,将Fragment添加至Activity有两种方式。3.1在activity的layout文件中声明fragment<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="horizontal"><fragmentandroid:id="@+id/titles"android:layout_width="0px"

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论