本程序的重点是在一个Activity中放入了两个Fragment。Android Fragment学习笔记_第1张图片


页面布局如下面代码(fragment_hide_show.xml):

[java] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:gravity="center_horizontal"
  5. android:layout_width="match_parent"android:layout_height="match_parent">
  6. <TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"
  7. android:gravity="center_vertical|center_horizontal"
  8. android:textAppearance="?android:attr/textAppearanceMedium"
  9. android:text="Demonstrationofhidingandshowingfragments."/>
  10. <LinearLayoutandroid:orientation="horizontal"android:padding="4dip"
  11. android:gravity="center_vertical"android:layout_weight="1"
  12. android:layout_width="match_parent"android:layout_height="wrap_content">
  13. <Buttonandroid:id="@+id/frag1hide"
  14. android:layout_width="wrap_content"android:layout_height="wrap_content"
  15. android:text="Hide"/>
  16. <fragmentandroid:name="polycom.com.cn.FirstFragment"
  17. android:id="@+id/fragment1"android:layout_weight="1"
  18. android:layout_width="0px"android:layout_height="wrap_content"/>
  19. </LinearLayout>
  20. <LinearLayoutandroid:orientation="horizontal"android:padding="4dip"
  21. android:gravity="center_vertical"android:layout_weight="1"
  22. android:layout_width="match_parent"android:layout_height="wrap_content">
  23. <Buttonandroid:id="@+id/frag2hide"
  24. android:layout_width="wrap_content"android:layout_height="wrap_content"
  25. android:text="Hide"/>
  26. <fragmentandroid:name="polycom.com.cn.SecondFragment"
  27. android:id="@+id/fragment2"android:layout_weight="1"
  28. android:layout_width="0px"android:layout_height="wrap_content"/>
  29. </LinearLayout>
  30. </LinearLayout>

在每一个LinearLayout里均有一个Fragment,以下是java代码实现。主要分为三个.java文件,其中FragmentActivity.java主要是设置了两个按钮监听器,用来控制显示和隐藏Fragment中的内容,FirstFragment.java、SecondFragment.java主要是为Fragment加载显示页面。

FragmentActivity.java

[java] view plain copy
  1. importandroid.app.Activity;
  2. importandroid.app.Fragment;
  3. importandroid.app.FragmentManager;
  4. importandroid.app.FragmentTransaction;
  5. importandroid.os.Bundle;
  6. importandroid.view.View;
  7. importandroid.view.View.OnClickListener;
  8. importandroid.widget.Button;
  9. publicclassFragmentActivityextendsActivity{
  10. @Override
  11. protectedvoidonCreate(BundlesavedInstanceState){
  12. super.onCreate(savedInstanceState);
  13. setContentView(R.layout.fragment_hide_show);
  14. FragmentManagerfm=getFragmentManager();
  15. //下面的两行代码是在Activity中按钮添加监听事件,控制Fragment的显示和隐藏
  16. addShowHideListener(R.id.frag1hide,fm.findFragmentById(R.id.fragment1));
  17. addShowHideListener(R.id.frag2hide,fm.findFragmentById(R.id.fragment2));
  18. }
  19. voidaddShowHideListener(intbuttonId,finalFragmentfragment){
  20. //获取activity中的button
  21. finalButtonbutton=(Button)findViewById(buttonId);
  22. button.setOnClickListener(newOnClickListener(){
  23. publicvoidonClick(Viewv){
  24. FragmentTransactionft=getFragmentManager().beginTransaction();
  25. /*为Fragment设置淡入淡出效果,Android开发网提示这里这两个动画资源是android内部资源无需我们手动定义。*/
  26. ft.setCustomAnimations(android.R.animator.fade_in,
  27. android.R.animator.fade_out);
  28. if(fragment.isHidden()){
  29. ft.show(fragment);
  30. button.setText("隐藏");
  31. }else{
  32. ft.hide(fragment);
  33. button.setText("显示");
  34. }
  35. ft.commit();
  36. }
  37. });
  38. }
  39. }

FirstFragment.java

[java] view plain copy
  1. importandroid.app.Fragment;
  2. importandroid.os.Bundle;
  3. importandroid.view.LayoutInflater;
  4. importandroid.view.View;
  5. importandroid.view.ViewGroup;
  6. importandroid.widget.TextView;
  7. publicclassFirstFragmentextendsFragment{
  8. TextViewmTextView;
  9. @Override
  10. publicViewonCreateView(LayoutInflaterinflater,ViewGroupcontainer,
  11. BundlesavedInstanceState){
  12. //从文件example_fragment.xml加载了一个layout
  13. Viewv=inflater.inflate(R.layout.labeled_text_edit,container,true);
  14. Viewtv=v.findViewById(R.id.msg);
  15. ((TextView)tv).setText("Thefragmentsavesandrestoresthistext.");
  16. mTextView=(TextView)v.findViewById(R.id.saved);
  17. if(savedInstanceState!=null){
  18. mTextView.setText(savedInstanceState.getCharSequence("text"));
  19. }
  20. returnv;
  21. }
  22. @Override
  23. publicvoidonSaveInstanceState(BundleoutState){
  24. super.onSaveInstanceState(outState);
  25. outState.putCharSequence("text",mTextView.getText());
  26. }
  27. }
SecondFragment.java

[java] view plain copy
  1. importandroid.app.Fragment;
  2. importandroid.os.Bundle;
  3. importandroid.view.LayoutInflater;
  4. importandroid.view.View;
  5. importandroid.view.ViewGroup;
  6. importandroid.widget.TextView;
  7. publicclassSecondFragmentextendsFragment{
  8. @Override
  9. publicViewonCreateView(LayoutInflaterinflater,ViewGroupcontainer,
  10. BundlesavedInstanceState){
  11. //从文件example_fragment.xml加载了一个layout
  12. Viewv=inflater.inflate(R.layout.labeled_text_edit,container,true);
  13. Viewtv=v.findViewById(R.id.msg);
  14. ((TextView)tv).setText("TheTextViewsavesandrestoresthistext.");
  15. //另外一种TextView的保存模式
  16. ((TextView)v.findViewById(R.id.saved)).setSaveEnabled(true);
  17. returnv;
  18. }
  19. }

下面是Fragment中加载的布局文件(labeled_text_edit.xml)

[java] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"android:padding="4dip"
  4. android:layout_width="match_parent"android:layout_height="wrap_content">
  5. <TextViewandroid:id="@+id/msg"
  6. android:layout_width="match_parent"android:layout_height="wrap_content"
  7. android:layout_weight="0"
  8. android:paddingBottom="4dip"/>
  9. <EditTextandroid:id="@+id/saved"
  10. android:layout_width="match_parent"android:layout_height="wrap_content"
  11. android:layout_weight="1"
  12. android:text="@string/initial_text"
  13. android:freezesText="true">
  14. <requestFocus/>
  15. </EditText>
  16. </LinearLayout>

http://download.csdn.net/detail/flying_tao/3422836

更多相关文章

  1. Android中播放mp3文件
  2. Android 文件的下载
  3. android 分享到 代码
  4. Android中NFC功能流程图解析及代码演示『轉』
  5. Android 将图片转化为缩略图再加载
  6. android 关于 发送post请求的代码总结(包含加上参数)

随机推荐

  1. Android blueZ HCI(一个):hciconfig实施和经
  2. Android 5.1部分apk的升级或缓存功能无效
  3. 【视频课程】Android底层开发关键技术—A
  4. TextView 图文聊天
  5. Android内核和驱动程序
  6. android Handler详细使用方法实例
  7. Android中DVM和java中的JVM区别
  8. Android官方技术文档翻译——Gradle 插件
  9. Android的Touch事件处理机制
  10. 【Android】仿UC网络判断效果