Fragment的简单使用(切换界面)-FenGKun

最近在做一些Android的简单布局应用,以下就是我这次做的效果,自我感觉挺漂亮就拿出来给大家分享一下

首先,要定义四个FindWorkFragment,FindTalentsFragment,FindSchoolFragment,FindStudentFragment类

注意,继承的是 Fragment类(android.support.v4.app.Fragment)

由于我就做了第一个类的具体功能,所以也就拿FindWorkFragment类在展示吧

1、FindWorkFragment布局


<?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"
    android:background="#31C4F7">

    <!-- 上间隙 -->
    <View
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="10"/>

    <!-- 标题 -->
    <TextView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="30"
        android:text="找工作"
        android:textColor="#fff"
        android:textSize="40sp"
        android:gravity="center"/>

    <!-- 间隙 -->
    <View
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="15"/>

    <!-- 姓名 -->
     <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="15"
        android:orientation="horizontal"
        >

        <!-- 名称 -->
        <TextView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="50"
            android:text="姓名:"
            android:textColor="#fff"
            android:textSize="20sp"
            android:gravity="right|center_vertical"/>

        <!-- 间隙 -->
        <View
	        android:layout_width="0dp"
	        android:layout_height="match_parent"
	        android:layout_weight="2"/>
        <!-- 输入框 -->
        <EditText android:id="@+id/etName"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="100"
            android:hint="请输入姓名"
            android:background="#fff"
            android:gravity="left|center_vertical"
            android:paddingLeft="10dp"
            android:textSize="23sp"/>
        <!-- 间隙 -->
        <View
	        android:layout_width="0dp"
	        android:layout_height="match_parent"
	        android:layout_weight="11"/>

    </LinearLayout>

    <!-- 间隙 -->
    <View
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="20"/>

    <!-- 手机号 -->
     <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="15"
        android:orientation="horizontal"
        >

        <!-- 名称 -->
        <TextView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="50"
            android:text="手机号:"
            android:textColor="#fff"
            android:textSize="20sp"
            android:gravity="right|center_vertical"/>

        <!-- 间隙 -->
        <View
	        android:layout_width="0dp"
	        android:layout_height="match_parent"
	        android:layout_weight="2"/>
        <!-- 输入框 -->
        <EditText android:id="@+id/etPhone"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="100"
            android:hint="请输入手机号"
            android:background="#fff"
            android:gravity="left|center_vertical"
            android:paddingLeft="10dp"
            android:textSize="23sp"/>
        <!-- 间隙 -->
        <View
	        android:layout_width="0dp"
	        android:layout_height="match_parent"
	        android:layout_weight="11"/>

    </LinearLayout>

    <!-- 间隙 -->
    <View
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="20"/>

    <!-- 选择工种 -->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="15"
        android:orientation="horizontal"
        >

        <!-- 名称 -->
        <TextView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="50"
            android:text="选择工种:"
            android:textColor="#fff"
            android:textSize="20sp"
            android:gravity="right|center_vertical"/>

        <!-- 间隙 -->
        <View
	        android:layout_width="0dp"
	        android:layout_height="match_parent"
	        android:layout_weight="2"/>
        <!-- 选择工种 -->
        <Spinner android:id="@+id/spType"
            android:layout_width="0dp"
            android:layout_weight="102"
            android:layout_height="match_parent"
            android:paddingLeft="10dp"
            android:textSize="23sp"
            android:prompt="@string/select">
        </Spinner>

        <!-- 间隙 -->
        <View
	        android:layout_width="0dp"
	        android:layout_height="match_parent"
	        android:layout_weight="10"/>

    </LinearLayout>

    <!-- 间隙 -->
    <View
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="20"/>

    <!-- 发布 -->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="15"
        android:orientation="horizontal">

        <!-- 间隙 -->
        <View
	        android:layout_width="0dp"
	        android:layout_height="match_parent"
	        android:layout_weight="1"/>

        <!-- 发布 -->
        <Button android:id="@+id/btnCommit"
            android:layout_width="0dp"
            android:layout_weight="4"
            android:layout_height="match_parent"
            android:text="发布"
            android:textColor="#fff"
            android:textSize="20sp"
            android:background="#E4BA3F"/>

        <!-- 间隙 -->
        <View
	        android:layout_width="0dp"
	        android:layout_height="match_parent"
	        android:layout_weight="1"/>

        <!-- 重置 -->
        <Button android:id="@+id/btnReset"
            android:layout_width="0dp"
            android:layout_weight="4"
            android:layout_height="match_parent"
            android:text="重置"
            android:textColor="#fff"
            android:textSize="20sp"
            android:background="#E4BA3F"/>

        <!-- 间隙 -->
        <View
	        android:layout_width="0dp"
	        android:layout_height="match_parent"
	        android:layout_weight="1"/>

    </LinearLayout>

    <!-- 底间隙 -->
    <View
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="20"/>

</LinearLayout>

2、FindWorkFragment类的具体操作,里面说的很详细,我就不做解释了

<pre name="code" class="java">package com.example.recruitget;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;

/**
 * 找工作
 * @author FenGKun
 *
 */
public class FindWorkFragment extends Fragment {

	/** 找工作 */
	private View m_vFindWorkFragment;
	/** 姓名 */
	private EditText m_etName;
	/** 电话 */
	private EditText m_etPhone;
	/** 发布 */
	private Button m_btnCommit;
	/** 重置 */
	private Button m_btnReset;
	/** 下拉列表 */
	private Spinner m_spType;
	private ArrayAdapter<String> adapter;
	/** 选项 */
	private String[] types = new String[] {"医   生","工   人","教   师","销   售","服   务"};

	public void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
	}

	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		m_vFindWorkFragment = inflater.inflate(R.layout.find_work, container,false);

		// 初始化变量
		initUi();
		return m_vFindWorkFragment;
	}

	/**
	 * 初始化变量
	 */
	private void initUi() {
		// 姓名
		m_etName = (EditText) m_vFindWorkFragment.findViewById(R.id.etName);
		// 电话
		m_etPhone = (EditText) m_vFindWorkFragment.findViewById(R.id.etPhone);
		// 发布
		m_btnCommit = (Button) m_vFindWorkFragment.findViewById(R.id.btnCommit);
		m_btnCommit.setOnClickListener(commit);
		// 重置
		m_btnReset = (Button) m_vFindWorkFragment.findViewById(R.id.btnReset);
		m_btnReset.setOnClickListener(reset);
		// 下拉列表
		m_spType = (Spinner) m_vFindWorkFragment.findViewById(R.id.spType);
		// 定义适配器
		adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_item, types);
		//设置下拉列表的风格
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        //将adapter 添加到spinner中
        m_spType.setAdapter(adapter);
        //添加事件Spinner事件监听
        m_spType.setOnItemSelectedListener( new itemSelectedListener());
        m_spType.setVisibility(View.VISIBLE);
        m_spType.setSelection(0, true);
	}

	/**
	 * spinner监听类
	 */
	private class itemSelectedListener implements OnItemSelectedListener{

		@Override
		public void onItemSelected(AdapterView<?> parent, View view,
				int position, long id) {
		}

		@Override
		public void onNothingSelected(AdapterView<?> parent) {
			// TODO Auto-generated method stub

		}

	}

	/**
	 * 发布事件
	 */
	private View.OnClickListener commit = new View.OnClickListener() {

		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub
			Toast.makeText(getActivity(), "发布成功!请静静等待...", Toast.LENGTH_SHORT).show();
		}
	};

	/**
	 * 重置事件
	 */
	private View.OnClickListener reset = new View.OnClickListener() {

		@Override
		public void onClick(View v) {
			m_etName.setText("");
			m_etPhone.setText("");
			m_spType.setSelection(0, true);
		}
	};

}

3、最后就是主页操作了,首先是MainActivity布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity"
    android:background="#fff">

    <!-- 中间内容 -->
    <fragment android:id="@+id/fragmentPager"
        android:name="com.example.recruitget.FindWorkFragment"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="677"
        />

    <!-- 底部导航栏 -->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="73"
        android:orientation="horizontal" >

        <!-- 找工作 -->
        <TextView android:id="@+id/tvWork"
            android:layout_width="0dp"
            android:layout_weight="50"
            android:layout_height="match_parent"
            android:text="找工作"
            android:gravity="center"
            android:textColor="#000"
            android:background="#E4BA3F"/>
        <!-- 分割线 -->
        <View
            android:layout_width="0dp"
            android:layout_weight="0.5"
            android:layout_height="match_parent"
            android:background="#cccccc"/>

        <!-- 招人才 -->
        <TextView android:id="@+id/tvTalents"
            android:layout_width="0dp"
            android:layout_weight="50"
            android:layout_height="match_parent"
            android:text="招人才"
            android:textColor="#E4BA3F"
            android:gravity="center"/>
        <!-- 分割线 -->
        <View
            android:layout_width="0dp"
            android:layout_weight="0.5"
            android:layout_height="match_parent"
            android:background="#ccc"/>
        <!-- 找学校 -->
        <TextView android:id="@+id/tvSchool"
            android:layout_width="0dp"
            android:layout_weight="50"
            android:layout_height="match_parent"
            android:text="找学校"
            android:gravity="center"
            android:textColor="#E4BA3F"/>
        <!-- 分割线 -->
        <View
            android:layout_width="0dp"
            android:layout_weight="0.5"
            android:layout_height="match_parent"
            android:background="#ccc"/>
        <!-- 招学生 -->
        <TextView android:id="@+id/tvStudent"
            android:layout_width="0dp"
            android:layout_weight="50"
            android:layout_height="match_parent"
            android:text="招学生"
            android:gravity="center"
            android:textColor="#E4BA3F"/>
    </LinearLayout>

</LinearLayout>

4、MainActivity类继承FragmentActivity,具体操作如下

package com.example.recruitget;

import android.R.color;
import android.os.Bundle;
import android.app.Activity;
import android.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.Menu;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.TextView;

/**
 * 功能首页
 * @author FenGKun
 *
 */
public class MainActivity extends FragmentActivity {

	/** 找工作 */
	private TextView tv_findWork;
	/** 招人才 */
	private TextView tv_findTalents;
	/** 找学校 */
	private TextView tv_findSchool;
	/** 招学生 */
	private TextView tv_findStudent;
	/** 具体内容 */
	private android.support.v4.app.Fragment contentFragment;
	/** 管理fragment */
	private FragmentManager fragmentManager;
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		// 初始化数据
		initUi();
	}
	/**
	 * 初始化变量
	 */
	private void initUi() {
		// 找工作
		tv_findWork = (TextView) findViewById(R.id.tvWork);
		tv_findWork.setOnClickListener(itemClick);
		// 招人才
		tv_findTalents = (TextView) findViewById(R.id.tvTalents);
		tv_findTalents.setOnClickListener(itemClick);
		// 找学校
		tv_findSchool = (TextView) findViewById(R.id.tvSchool);
		tv_findSchool.setOnClickListener(itemClick);
		// 招学生
		tv_findStudent = (TextView) findViewById(R.id.tvStudent);
		tv_findStudent.setOnClickListener(itemClick);
		// fragment管理者
		fragmentManager = getSupportFragmentManager();
	}

	/**
	 * 点击选项
	 */
	private View.OnClickListener itemClick = new View.OnClickListener() {

		@Override
		public void onClick(View v) {
			tv_findWork.setBackgroundColor(0xffffffff);
			tv_findWork.setTextColor(0XFFE4BA3F);
			tv_findTalents.setBackgroundColor(0Xffffffff);
			tv_findTalents.setTextColor(0XFFE4BA3F);
			tv_findSchool.setBackgroundColor(0xffffffff);
			tv_findSchool.setTextColor(0XFFE4BA3F);
			tv_findStudent.setBackgroundColor(0xffffffff);
			tv_findStudent.setTextColor(0XFFE4BA3F);
			TextView textview = (TextView) v;
	        textview.setBackgroundColor(0XFFE4BA3F);
	        textview.setTextColor(0xff000000);
	        // 开启一个Fragment事务
			FragmentTransaction transaction = fragmentManager.beginTransaction();
			switch (v.getId()) {
			// 找工作
			case R.id.tvWork:
				contentFragment = new FindWorkFragment();
				transaction.replace(R.id.fragmentPager, contentFragment);
				break;
			// 招人才
			case R.id.tvTalents:
				contentFragment = new FindTalentsFragment();
				transaction.replace(R.id.fragmentPager, contentFragment);
				break;
			// 找学校
			case R.id.tvSchool:
				contentFragment = new FindSchoolFragment();
				transaction.replace(R.id.fragmentPager, contentFragment);
				break;
			// 招学生
			case R.id.tvStudent:
				contentFragment = new FindStudentFragment();
				transaction.replace(R.id.fragmentPager, contentFragment);
				break;

			default:
				break;
			}
			transaction.commit();
		}
	};

}

其实,Fragment用起来很方便,而且他的兼容性很好,希望新手们都能学习一下!!!

时间: 2024-10-11 05:08:23

Fragment的简单使用(切换界面)-FenGKun的相关文章

【原创】【ViewPager+Fragment】ViewPager中切换界面Fragment被销毁的问题分析

ViewPager中切换界面Fragment被销毁的问题分析 1.使用场景 ViewPager+Fragment实现界面切换,界面数量>=3 2.Fragment生命周期以及与Activity生命周期对比                    3.问题描述 按上图所说,只有当Fragment所Attached的Activity执行destroy的时候才会调用onDestoryView方法,然而现实是: 当界面由2切换到1的时候,3界面对应的Fragment实际上走了如下流程: 1 -->onP

转载【ViewPager+Fragment】ViewPager中切换界面Fragment被销毁的问题分析

ViewPager中切换界面Fragment被销毁的问题分析 原文链接 http://www.cnblogs.com/monodin/p/3866441.html 1.使用场景 ViewPager+Fragment实现界面切换,界面数量>=3 2.Fragment生命周期以及与Activity生命周期对比                    3.问题描述 按上图所说,只有当Fragment所Attached的Activity执行destroy的时候才会调用onDestoryView方法,然而现

Android popwindow和fragment结合 左侧弹出下拉菜单 切换界面

延续上一篇文章Android 实现对话框圆角功能 ,在项目推进的过程当中,之前是已经用popwindow实现了点击按钮,在按钮下方弹出下拉菜单,实现了类似微信右上角加好友的功能,有兴趣的朋友,可以下载这个资源.回归主题,之前popwindow的使用,是固定在了登陆刚进去的界面,假设现在点击了左侧菜单的其他按钮,这就要求标题下方的内容必须更新所要显示的内容,一开始想都没想,就用了如下代码进行跳转: Intent intent = new Intent(Intent.ACTION_EDIT, nul

ViewPager中切换界面Fragment被销毁的问题

ViewPager中切换界面Fragment被销毁的问题分析 使用ViewPager+Fragment实现界面切换,当界面数量大于3时,出现二次滑动后数据消失的情况,下面由Fragment生命周期进行分析 简单解析: 使用pager=3进行测试,当界面由2切换到1的时候,3界面对应的Fragment实际上走了如下流程: 1 -->onPause 2 -->onStop 3 -->onDestroyView 再由1切换回2或者3时,3界面对应的Fragment的执行流程: 1 -->

Android典型界面设计——FragmentTabHost+Fragment实现底部tab切换

Android典型界面设计——FragmentTabHost+Fragment实现底部tab切换 Android学习笔记:TabHost 和 FragmentTabHost

(1) 标签切换界面

一.代码部分 1.最简单:FragmentTabHost + Fragment http://download.csdn.net/detail/mountain3th/7630123 2.略复杂:TabHost + Fragment http://download.csdn.net/detail/mountain3th/7630383 3.变形:Button + Fragment http://download.csdn.net/detail/mountain3th/7630181 4.升级版:

带有ListView的界面无法通过手势左右滑动切换界面问题解决办法

问题描述: 在做OnGestureListener滑动切换窗口的时候,会遇到这样的问题.就是当界面中含有ListView的时候,OnGestureListener的左右触屏滑动就被ListView自己吃掉了. 问题分析: 在Android系统中,事件的分发和响应都按照一定的优先级仅仅有条的进行着.如果Activity中包含ListView那么系统的onTouchEvent事件会优先分发给ListView去处理,这时ListView的OnItemClickListener监听器会优先响应onTou

用Fragment实现Tab页面切换效果初步总结

前言: 最近在Android项目中需要在活动中实现多页面切换的功能,第一次是实现的过程中,是让Activity同时去加载三个界面的,通过点击tab按钮对页面设置隐藏和显示,实现页面切换效果,但是后面发现这种实现方式其实存在很多问题: 首先,同时去加载三个页面,切换Activity的速度会变慢,尤其是布局中如果有很多ImageView,ImageButton等使用到图片资源的控件时,切换效果非常不好: 其次,由于使用了很多图片资源,在退出Activity的时候,像Drawable,Bitmap等一

Android控件-Fragment+ViewPager(高仿微信界面)

什么是Fragment? Fragment是Android3.0后新增的概念,Fragment名为碎片,不过却和Activity十分相似,具有自己的生命周期,它是用来描述一些行为或一部分用户界面在一个Activity中,我们可以合并多个Fragment在一个单独的activity中建立多个UI面板,或者重用Fragment在多个activity中. 关于Fragment的生命周期,由于Fragment需要依赖Activity,也就是说当一个Activity的生命周期结束之后,那么Fragment

Android开发——Fragment的简单使用总结

前言: 之前搞项目的时候,就使用了这个Fragment,中间遇到了许多坑,把坑都解决了,现在写一篇较为简单的Fragment使用总结 Fragment的简单介绍: 简单来说,Fragment其实可以理解为一个具有自己生命周期的控件,只不过这个控件又有点特殊,它有自己的处理输入事件的能力,有自己的生命周期,又必须依赖于Activity,能互相通信和托管. 使用Fragment可以精简Activity文件的代码,便于更好的阅读,同时,有着更好的速度加载 使用Fragment的另外一种情况是可以在平板