Android Fragment (二) 实例2
由于看客的要求,我就把读者所要的写出来。
由于上一篇是每一个Fragment 实例了同一个layout.xml ,造成了读者的困惑,这篇我就让每一个Fragment 加载一个不同的layout.xml.
首先我们要准备四个layout.xml ,用来给每个点击跳转页面。
第一个fg_contnet.xml
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="@color/cornsilk"
- android:orientation="vertical" >
- <TextView
- android:id="@+id/txt_content"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:gravity="center"
- android:text="第一个"
- android:textColor="@android:color/holo_green_light"
- android:textSize="20sp"/>
- </LinearLayout>
第二个fg_contnet2.xml :
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="@color/cornsilk"
- android:gravity="center_vertical"
- android:orientation="vertical" >
- <TextView
- android:id="@+id/txt_content"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:gravity="center"
- android:text="第二个"
- android:textColor="@android:color/holo_green_light"
- android:textSize="20sp"/>
- <Button
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="Load。。。。"
- />
- </LinearLayout>
第三个 fg_content3.xml :
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="@color/cornsilk"
- android:orientation="vertical" >
- <ImageView
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:src="@drawable/ic_launcher"
- />
- </LinearLayout>
第四个 fg_content4.xml :
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="@color/cornsilk"
- android:orientation="vertical" >
- <TimePicker
- android:id="@+id/timePicker1"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content" />
- </LinearLayout>
因为要每个Fragemnt 加载一个layout.xml ,所以MyFragment 也要修改:
我们在构造器中传入一个content_layout.xml ,动态改变FragmentLayout.
- import android.app.Fragment;
- import android.os.Bundle;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- public class MyFragment extends Fragment{
- private int content_layout;
- public MyFragment(int content) {
- this.content_layout = content;
- }
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
- View view = inflater.inflate(content_layout,container,false);
- return view;
- }
- }
最后在MainActivity 中:
- import android.app.Activity;
- import android.app.FragmentManager;
- import android.app.FragmentTransaction;
- import android.os.Bundle;
- import android.view.View;
- import android.view.Window;
- import android.widget.TextView;
- public class MainActivity extends Activity implements View.OnClickListener{
- //UI Object
- private TextView txt_channel;
- private TextView txt_message;
- private TextView txt_better;
- private TextView txt_setting;
- //Fragment Object
- private MyFragment fg1,fg2,fg3,fg4;
- private FragmentManager fManager;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- requestWindowFeature(Window.FEATURE_NO_TITLE);
- setContentView(R.layout.activity_main);
- fManager = getFragmentManager();
- bindViews();
- txt_channel.performClick(); //模拟一次点击,既进去后选择第一项
- }
- //UI组件初始化与事件绑定
- private void bindViews() {
- txt_channel = (TextView) findViewById(R.id.txt_channel);
- txt_message = (TextView) findViewById(R.id.txt_message);
- txt_better = (TextView) findViewById(R.id.txt_better);
- txt_setting = (TextView) findViewById(R.id.txt_setting);
- txt_channel.setOnClickListener(this);
- txt_message.setOnClickListener(this);
- txt_better.setOnClickListener(this);
- txt_setting.setOnClickListener(this);
- }
- //重置所有文本的选中状态
- private void setSelected(){
- txt_channel.setSelected(false);
- txt_message.setSelected(false);
- txt_better.setSelected(false);
- txt_setting.setSelected(false);
- }
- //隐藏所有Fragment
- private void hideAllFragment(FragmentTransaction fragmentTransaction){
- if(fg1 != null)fragmentTransaction.hide(fg1);
- if(fg2 != null)fragmentTransaction.hide(fg2);
- if(fg3 != null)fragmentTransaction.hide(fg3);
- if(fg4 != null)fragmentTransaction.hide(fg4);
- }
- @Override
- public void onClick(View v) {
- FragmentTransaction fTransaction = fManager.beginTransaction();
- hideAllFragment(fTransaction);
- switch (v.getId()){
- case R.id.txt_channel:
- setSelected();
- txt_channel.setSelected(true);
- if(fg1 == null){
- fg1 = new MyFragment(R.layout.fg_content);
- fTransaction.add(R.id.ly_content,fg1);
- }else{
- fTransaction.show(fg1);
- }
- break;
- case R.id.txt_message:
- setSelected();
- txt_message.setSelected(true);
- if(fg2 == null){
- fg2 = new MyFragment(R.layout.fg_content2);
- fTransaction.add(R.id.ly_content,fg2);
- }else{
- fTransaction.show(fg2);
- }
- break;
- case R.id.txt_better:
- setSelected();
- txt_better.setSelected(true);
- if(fg3 == null){
- fg3 = new MyFragment(R.layout.fg_content3);
- fTransaction.add(R.id.ly_content,fg3);
- }else{
- fTransaction.show(fg3);
- }
- break;
- case R.id.txt_setting:
- setSelected();
- txt_setting.setSelected(true);
- if(fg4 == null){
- fg4 = new MyFragment(R.layout.fg_content4);
- fTransaction.add(R.id.ly_content,fg4);
- }else{
- fTransaction.show(fg4);
- }
- break;
- }
- fTransaction.commit();
- }
- }
最后看一下效果:
谢谢大家的关注~ Can't get is forever, forget was once. ----到不了的就是永远, 忘不了的就是曾经。
Android Fragment (二) 实例2的更多相关文章
- Android Fragment (二) 实例1
千呼万唤始出来,今天就也写一篇Frament 的简单实例.先看效果: 一看这效果,首先我们的配置资源文件:new -->android xml -->selector --> 四个图 ...
- Android Fragment 简单实例
Android上的界面展示都是通过Activity实现的.Activity实在是太经常使用了.我相信大家都已经很熟悉了,这里就不再赘述. 可是Activity也有它的局限性,相同的界面在手机上显示可能 ...
- Android fragment (二)
怎样使用fragment? 1.首先你要确定下你有多少个fragment要使用在一个activity里. 2.依据你的fragment的数量,创建继承自fragment的class.然后依据实际需求重 ...
- Android Fragment使用(二) 嵌套Fragments (Nested Fragments) 的使用及常见错误
嵌套Fragment的使用及常见错误 嵌套Fragments (Nested Fragments), 是在Fragment内部又添加Fragment. 使用时, 主要要依靠宿主Fragment的 ge ...
- Android Fragment 实例
Fragment是Android honeycomb 3.0新增的概念,在Android——Fragment介绍.Android Fragment使用.Android FragmentManage F ...
- android viewpager 拿到当前显示的 fragment 的实例
一个 ViewPager 通过 FragmentPagerAdapter 绑定了 3 个 fragment 可以通过 Fragment fragment = getSupportFragmentMan ...
- Android进阶(二十三)Android开发过程之实例讲解
Android开发过程之实例讲解 前言 回过头来审视之前做过的Android项目,发觉自己重新开发时忽然间不知所措了,间隔了太长时间没有开发导致自己的Android技能知识急剧下降.温故而知新. 废话 ...
- Android Fragment使用(三) Activity, Fragment, WebView的状态保存和恢复
Android中的状态保存和恢复 Android中的状态保存和恢复, 包括Activity和Fragment以及其中View的状态处理. Activity的状态除了其中的View和Fragment的状 ...
- Android Fragment使用(一) 基础篇 温故知新
Fragment使用的基本知识点总结, 包括Fragment的添加, 参数传递和通信, 生命周期和各种操作. Fragment使用基础 Fragment添加 方法一: 布局里的标签 标识符: tag, ...
随机推荐
- 底部漂浮DIV
.buttonDiv{background-color: #4e4f50; border: 2px solid #83ABD3; border-radius: 4px; -khtml-opacity: ...
- 设置DataSource后DateGridView不显示的问题
在一个WinForm小程序中,有两处需要用DataGridView控件显示数据.设置DataGridView.DataSource为数据查询结果后,第一个DataGridView可以正常显示数据,而第 ...
- SQLServer字符操作
1.CHARINDEX('A',‘VALUE’) result:2 style:PATINDEX(varchar,varchar) 解释:A在字符串VALUE的位置次序. 2.PATINDEX( ...
- Apache Commons BeanUtils
http://commons.apache.org/proper/commons-beanutils/javadocs/v1.9.2/apidocs/org/apache/commons/beanut ...
- 0.读书笔记之The major advancements in Deep Learning in 2016
The major advancements in Deep Learning in 2016 地址:https://tryolabs.com/blog/2016/12/06/major-advanc ...
- Luogu 魔法学院杯-第二弹(萌新的第一法blog)
虽然有点久远 还是放一下吧. 传送门:https://www.luogu.org/contest/show?tid=754 第一题 沉迷游戏,伤感情 #include <queue> ...
- 学习PYTHON之路, DAY 8 - PYTHON 基础 8 (面向对象进阶)
类的成员 类的成员可以分为三大类:字段.方法和属性 注:所有成员中,只有普通字段的内容保存对象中,即:根据此类创建了多少对象,在内存中就有多少个普通字段.而其他的成员,则都是保存在类中,即:无论对象的 ...
- php案列4
一个最简单的利用php生成随机数或者随机字符串的函数.$chars变量中的字符自己修改就能达到数字或者字符串的目的 $len表示长度,代码如下: 复制代码 代码如下: /** * 产生随机字符 ...
- c# 判断当前时间是否在 工作日时间段内
#region //获取当前周几 private string _strWorkingDayAM = "08:30";//工作时间上午08:00 private string _s ...
- C#中REF和OUT的区别
在C# 中,既可以通过值也可以通过引用传递参数.通过引用传递参数允许函数成员更改参数的值,并保持该更改.若要通过引用传递参数, 可使用ref或out关键字.ref和out这两个关键字都能够提供相似的功 ...