Fragment学习进阶(二)----->动态显示和移除

原创 2015年11月20日 16:52:43


MainActivity

package com.pry.fragmentdemo2;

import com.example.fragmentdemo2.R;

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.View;

/**
 * 主页面 继承 FragmentActivity
 * 
 * @author Administrator
 */
public class MainActivity extends FragmentActivity {

	MyFragment2 fragment2;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		// 创建fragment实例
		MyFragment fragment = new MyFragment();

		// 得到FragmentManager
		FragmentManager fm = getSupportFragmentManager();

		// 开始事务
		FragmentTransaction beginTransaction = fm.beginTransaction();

		// 添加操作,把Fragment添加到MainActivity里面
		beginTransaction.add(R.id.ll_main, fragment);

		// 提交操作
		beginTransaction.commit();
	}

	/**
	 * 显示Fragment2界面
	 * 
	 * @param v
	 */

	public void showFragment2(View v) {
		// 初始化Fragment2
		fragment2 = new MyFragment2();

		// 得到FragmentManager
		FragmentManager fm = getSupportFragmentManager();

		// 开启事务,并且替换 fragment2
		FragmentTransaction transaction = fm.beginTransaction().replace(
				R.id.ll_main, fragment2);

		// 将此次事物添加到回退栈中, 点击back, 可以返回到事务提交前的状态
		transaction.addToBackStack(null);

		// 提交事务
		transaction.commit();
	}

	/**
	 * 移除Fragment2界面
	 * 
	 * @param v
	 */
	public void deleteFragment2(View v) {

		if(fragment2 != null){
			
			// 得到FragmentManager
			FragmentManager fm = getSupportFragmentManager();
			
			// 开启事务,并且移除 fragment2(方法链调用)
			FragmentTransaction transaction = fm.beginTransaction().remove(fragment2);
			
			// 将此次事物添加到回退栈中, 点击back, 可以返回到事务提交前的状态
			transaction.addToBackStack(null);
			
			// 提交事务
			transaction.commit();
			
			//将Fragment2对象置为空
			fragment2 = null;
		}
	}
}


activity_main


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <!-- 线性布局 两个按钮 -->
    <LinearLayout
        android:layout_marginTop="10dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:onClick="showFragment2"
            android:text="显示fragment2" />

        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:onClick="deleteFragment2"
            android:text="移除fragment2" />
    </LinearLayout>

    <!-- 线性布局 用来替换fragment-->
    <LinearLayout
        android:id="@+id/ll_main"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >
    </LinearLayout>

</LinearLayout>

MyFragment


package com.pry.fragmentdemo2;

import com.example.fragmentdemo2.R;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

/**
 * 自定义MyFragment
 * @author Administrator
 *
 */
public class MyFragment extends Fragment{
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		return View.inflate(getActivity(), R.layout.fragment_article, null);
	}
}

fragment_article


<?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:orientation="vertical" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="我是MyFragment界面" />

</LinearLayout>


MyFragment2


package com.pry.fragmentdemo2;

import com.example.fragmentdemo2.R;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

/**
 * 自定义MyFragment
 * @author Administrator
 *
 */
public class MyFragment2 extends Fragment{
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		return View.inflate(getActivity(), R.layout.fragment_article2, null);
	}
}


fragment_article2


<?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:orientation="vertical" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="我是MyFragment2界面" />

</LinearLayout>


效果图





Fragment之动态显示

Fragment之动态显示 1.参见上两篇介绍:Fragment初识,Fragment管理器 2.本例主要介绍动态显示Fragment,相关细节在上两篇文章里有介绍,这里不做赘述。 3.实现  ...
  • Momentyol
  • Momentyol
  • 2015年12月28日 20:54
  • 1215

jQuery学习总结和进阶展望

jQuery学习总结包括HTML文档操作、HTML文档遍历、事件、动画和AJAX。对常用的API进行分类和整理,巩固记忆,加深理解。 进阶展望点包括阅读jQuery源代码,理解其工作原理,分析其代码...
  • SuperVsky
  • SuperVsky
  • 2016年08月11日 23:10
  • 754

Android进阶学习内容整理

我是个喜欢不断学习新知识,探索新东西的人,无论是对于技术还是生活,我都有着足够的好奇心,我觉得只有这样,人生才会更快乐一些。然而,在学习的过程中,归纳和总结知识,整合资源的能力也是非常重要的。所以,今...
  • pangrongxian
  • pangrongxian
  • 2016年04月09日 21:11
  • 2246

Android的ViewPager中移除Fragment

Android的ViewPager中移除Fragment
  • MrGuanB
  • MrGuanB
  • 2016年03月14日 19:56
  • 432

JavaScript进阶学习(一)

学习了JavaScript基础语法,感觉掌握还不够,所以正在看:JavaScript高级程序设计。本书很基础,又有高级特性部分,深入浅出,值得一看 历史就不记了,一大堆 JavaScript事一种...
  • qq_24558789
  • qq_24558789
  • 2016年12月19日 16:26
  • 216

Android Fragment的增加,删除,添加

增加: Fragment
  • javaFORandroid
  • javaFORandroid
  • 2014年11月23日 12:57
  • 5464

Android:Actionbar的显示和隐藏

android在3.0的版本之后将Titlebar和menu和在一起,推出了Actionbar。现在Actionbar+fragment的组合很流行。今天讲一下Actionbar的显示和隐藏。界面很简...
  • vrinux
  • vrinux
  • 2015年03月10日 21:46
  • 574

Vue-进阶学习

1、vm(Vue的实例对象)中的data属性存放的数据才是响应式的 var vm = new Vue({  data:{  a:1  }}) // `vm.a` 是响应的 vm.a=20       ...
  • itzhengmaolin
  • itzhengmaolin
  • 2017年07月26日 12:12
  • 316

ios学习进阶

一、直播项目开源http://www.jianshu.com/p/b8db6c142aad https://github.com/chenliming777/LMLiveStreaming二、YY系...
  • qq_21005823
  • qq_21005823
  • 2017年10月10日 14:37
  • 355

Android 你应该知道的学习资源 进阶之路贵在坚持

最近比较忙,加上希望停下来整体些东西,所以blog的更新可能会比较慢,持续奋斗中。今天给大家整理下android墙外的学习资源,大家有什么推荐的直接留言。 出处:http://blog.csd...
  • lmj623565791
  • lmj623565791
  • 2015年03月31日 09:47
  • 51364
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Fragment学习进阶(二)----->动态显示和移除
举报原因:
原因补充:

(最多只允许输入30个字)