博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
动态创建Fragment
阅读量:6267 次
发布时间:2019-06-22

本文共 2257 字,大约阅读时间需要 7 分钟。

在android3.0之前。每创建一个界面就要新创建一个activity.

在3.0之后引入了Fragment.相当于一个轻量级的activity.不须要在清单文件配置。

先来看下怎样创建和使用Fragment :

程序界面activity_main.xml:

这里有两个fragment.(注意到了吗。f是小写的。貌似小写的都不用在清单文件配置)。

每一个fragment有一个name节点,这个节点引用了一个java类。看下Fragment1.java:

package com.example.myframent;import android.app.Fragment;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;public class Fragment1 extends Fragment{		//当fragment被创建的时候调用的方法,返回当前fragment显示的内容	@Override	public View onCreateView(LayoutInflater inflater, ViewGroup container,			Bundle savedInstanceState) {		return inflater.inflate(R.layout.fragment1, null);	}}
在onCreateView里。去填充了一个布局,看下这个布局fragment1.xml:

来看下终于效果:

ok.有时候我们有些需求,比方在手机横屏的时候显示一种布局,手机竖凭的时候显示一种布局,或者左边有一个固定的布局。右边的内容是随着左边的操作不停的变。那么该怎样操作呢?看下横竖屏幕的这个吧。

看下主界面:

这时候主界面里面什么都没有。

看下MainActivity:

package com.example.dynamicfragment;import android.os.Bundle;import android.annotation.SuppressLint;import android.app.Activity;import android.app.Fragment;import android.app.FragmentManager;import android.app.FragmentTransaction;import android.view.Menu;@SuppressLint("NewApi")public class MainActivity extends Activity {	@Override	protected void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentView(R.layout.activity_main);				//推断当前手机的朝向		int width = getWindowManager().getDefaultDisplay().getWidth();		int height = getWindowManager().getDefaultDisplay().getHeight();		Fragment fragment1 =new Fragment1();		Fragment fragment2 = new Fragment2();		FragmentManager fm = getFragmentManager();		FragmentTransaction ft = fm.beginTransaction();				if(width>height){			//水平			ft.replace(android.R.id.content, fragment1);		}else{			ft.replace(android.R.id.content, fragment2);		}		ft.commit();	}	@Override	public boolean onCreateOptionsMenu(Menu menu) {		// Inflate the menu; this adds items to the action bar if it is present.		getMenuInflater().inflate(R.menu.main, menu);		return true;	}}
注意怎么推断横竖屏幕的:假设宽度大于高度肯定是横的屏幕。

这里的Fragment1和上面的Fragment1.java文件是一样的。

布局文件也一样。

替换的关键是首先动态的创建须要的fragment.然后创建一个FragmentManager。然后开启Fragment事务,然后调用ft.replace(android.R.id.content, fragment1)方法替换内容。

最后不要忘记提交事务

看效果:竖直屏幕时:

然后把手机横放时:

你可能感兴趣的文章
走红日本 阿里云如何能够赢得海外荣耀
查看>>
数据结构与算法(回溯法) --javascript语言描述
查看>>
redis第二步(事务和锁)
查看>>
磁盘空间满引起的mysql启动失败:ERROR! MySQL server PID file could not be found!
查看>>
Net Standard扩展支持实例分享
查看>>
RHEL,centOS下vncserver,service命令关联的rpm包
查看>>
QTP关键字视图下显示项的相关设置
查看>>
linux cpu内存利用率获取
查看>>
Binder.js的重写过程记录
查看>>
汗,铁道部的12306js脚本竟然用的这么杂乱
查看>>
点播转码相关常见问题及排查方式
查看>>
[arm驱动]linux设备地址映射到用户空间
查看>>
在线转码
查看>>
我的友情链接
查看>>
励志短句在线翻译的方法介绍
查看>>
博客园美化-coffee
查看>>
Hibernate Annotation 学习
查看>>
Hadoop 3.0 纠删码技术分析(Erasure Coding)
查看>>
11、待添加
查看>>
26、百度地图 & 高德地图
查看>>