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.实现  ...

安卓学习之使用listview设置adapter时,解决动态显示图片的问题

安卓学习之使用listview设置adapter时,解决动态显示图片的问题
  • ismahui
  • ismahui
  • 2017年01月25日 19:45
  • 469

51单片机 学习之旅[4] 数码管 动态显示

之前的数码管只能实现 一个数字同时显示 在多个数码管中,但是如果要显示 123 这个 百位数的话 就无法显示出来。 现在就通过不断的很短的时间内 去刷新 多个数码管来显示(由于跟新的速度快,人眼是看...
  • mofaji
  • mofaji
  • 2015年06月28日 01:03
  • 249

智能课程表Android版-日期和时间的动态显示(二)

上一篇文章我们实现了时间的显示,但是是静态的,不能动态改变,那么怎么才能让静态的时间能以秒的方式来动态改变呢?     由于在上一篇文章中我们获得时间的方法是Calendar()类获得当前时间的...

Android——SeekBar动态显示进度

  • 2017年10月26日 17:49
  • 10.84MB
  • 下载

Android之framework修改底部导航栏NavigationBar动态显示和隐藏

大家都知道,Android从3.0版本开始就加入了NavigationBar,主要是为那些没有实体按键的设备提供虚拟按键,但是,它始终固定在底部,占用48dp的像素高度,尽管从android 4.4开...

FPGA驱动OLED动态显示(Verilog代码)

  • 2017年10月22日 21:44
  • 12.78MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Fragment学习进阶(二)----->动态显示和移除
举报原因:
原因补充:

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