Android_Fragment
来源:互联网 发布:身份证登记软件 编辑:程序博客网 时间:2024/06/13 08:05
1. Fragment与Activity之间的关系
Fragment,碎片,提出最初是为了解决平板和手机屏幕大小不同,设计布局的问题,fragment通过Fragment Manager由Activity进行托管,可以根据屏幕大小不同的客户端加载不同的fragment.通俗的说,fragment就是为保证UI在不同大小屏幕上的兼容性而生的。
2. (视图层)Fragment.xml与Activity.xml之间的关系
首先,既然说是布局,那么fragment必不可少的就是布局文件,但是想要对控件进行操作,单单有一个布局是不够的,还需要布局中有各种控件。此处,本质上可以理解为,main_activity.xml文件创建容器,容器中填充的就是fragment.xml文件内容。main_activity.xml文件仅仅只是提供了一个空白的画板而已。所有的控件都包含在fragment.xml中。
//在布局文件中添加碎片<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent" > <fragment android:id="@+id/left_fragment" android:name="com.example.fragmenttest.LeftFragment" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" /> <fragment android:id="@+id/right_fragment" android:name="com.example.fragmenttest.RightFragment" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" /></LinearLayout>//注意这里需要通过android:name 属性来显式指明要添加的碎片类名,注意一定要将类的包名也加上。
3 (控制层)Fragment.java与MainActivity.java之间的关系
在活动运行时自动将碎片添加到活动中,MainActivity.java加载碎片,然后对于控件的各种操作均在Fragment.java中完成
这里可以对比下调用下一个Activity和加载碎片的区别。
从代码上来区分
Intent intent=new Intent(MainActivity.this,firstActivity.class);startActivity(intent);
而动态加载碎片是比较复杂的,包括五个步骤:
(1)创建待添加的碎片
(2)获取FragmentManager(),在活动中可以直接调用getFragmentManager()方法得到
(3)开启一个事务,通过调用beginTransaction()方法开启。
(4)向容器内加入碎片,一般使用replace()方法实现,需要传入容器的id 和待添加的碎片实例。
(5)提交事务,调用commit()方法来完成。
例子:
public class MainActivity extends Activity implements OnClickListener {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button = (Button) findViewById(R.id.button);button.setOnClickListener(this);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.button:AnotherRightFragment fragment = new AnotherRightFragment();FragmentManager fragmentManager = getFragmentManager();FragmentTransaction transaction = fragmentManager.beginTransaction();transaction.replace(R.id.right_layout, fragment);transaction.commit();break;default:break;}}}
- Android_Fragment
- Android_Fragment
- Android_Fragment
- Android_Fragment
- Android_Fragment
- android_fragment
- Android_Fragment详解
- Android_Fragment详解
- Android_Fragment详解
- android_Fragment简介
- Android_Fragment碎片
- android_fragment加载
- android_fragment的介绍
- Android_Fragment 学习进阶(一)
- Android_Fragment解析(1)+transaction_141009
- Android_Fragment实现Tab
- Android_Fragment遇到BaiduMap
- Android_Fragment+ViewPager滑动
- iTunes 12.6.3(含appStore)
- C#-vs2010打开vs2013的解决方案
- JAVA
- 在Ubuntu14.04中安装多版本内核ipython notebook(jupyter notebook)
- C# webservice 連接 sap
- Android_Fragment
- Mybatis-逆向工程实现
- NET图像处理库ImageGear for .NET更新至v23.4,添加增强版的数字签名技术
- 千位分隔符的ts实现
- simple adapter 添加checkbox和button控件
- 服务器是如何执行php代码的,nginx和php是怎么协调工作的?
- Cocos2d-xmemo
- Jenkins入门系列之——02第二章 Jenkins安装与配置
- SpringBoot修改默认端口号