• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > android Fragment详细讲述,包括问题隐患

android Fragment详细讲述,包括问题隐患

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了android fragment,android fragment切换,android fragment实例,android fragment传值,android fragment使用等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

android Fragment详细讲述,包括问题隐患


Fragment是安卓v4包的新东西,名为碎片化布局,该布局的目的就是为了取代过时的tabhost.使操作更加方便,大大增加了开发者的高效开发。在使用好Fragment的同时一定要先掌握它的生命周期。废话不多说。看下图。

\\


\
1.如何实现像QQ一样的底部菜单呢?
首先如果你用V4包,
1.首先父类一定要继承FragmentActivity.
2.进行初始化操作   
也对于新手不是太明白。
我先大概说下流程,
(1 开启碎片化布局管理区,首要做的事,如果在fragment中,就要先getActivity)

FragmentManager mFragmentManager= getFragmentManager();
(2通过碎片化布局管理器开启事务,这是执行fragment很关键的一步
FragmentTransaction transaction = mFragmentManager.beginTransaction();
(3然后把碎片化布局fragment添加到事务中,这是最关键的一步了

 



transaction.add(R.id.content, messageFragment);
(4最后一定不能忘了提交事务,不然你所做的一切都会白费。


transaction.commit();


3 有人说这个是干嘛的?onRestoreInstanceState如果你看完完整的fragment生命周期你就会明白,这个会在fragment不正常关闭,又打开时起到回复数据的作用,如果不这样做,可能会使数据重叠,当然解决数据重叠的方法有很多种,这儿就不再做介绍了。要源码的留言。





package com.fragment.bottom;


import android.app.Activity;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.ImageView;
import android.widget.TextView;


import com.example.networks.R;


/**
* 项目的主Activity,所有的Fragment都嵌入在这里。
*/
public class MainActivity extends Activity implements OnClickListener {


/**
* 用于展示消息的Fragment
*/
private MessageFragment mMessageFragment;


/**
* 用于展示联系人的Fragment
*/
private ContactsFragment mContactsFragment;


/**
* 用于展示动态的Fragment
*/
private NewsFragment mMewsFragment;


/**
* 用于展示设置的Fragment
*/
private SettingFragment mSettingFragment;


/**
* 消息界面布局
*/
private View mMessageLayout;


/**
* 联系人界面布局
*/
private View contactsLayout;


/**
* 动态界面布局
*/
private View mNewsLayout;


/**
* 设置界面布局
*/
private View mSettingLayout;


/**
* 在Tab布局上显示消息图标的控件
*/
private ImageView messageImage;


/**
* 在Tab布局上显示联系人图标的控件
*/
private ImageView contactsImage;


/**
* 在Tab布局上显示动态图标的控件
*/
private ImageView newsImage;


/**
* 在Tab布局上显示设置图标的控件
*/
private ImageView settingImage;


/**
* 在Tab布局上显示消息标题的控件
*/
private TextView mMessageText;


/**
* 在Tab布局上显示联系人标题的控件
*/
private TextView mContactsText;


/**
* 在Tab布局上显示动态标题的控件
*/
private TextView newsText;


/**
* 在Tab布局上显示设置标题的控件
*/
private TextView settingText;


/**
* 用于对Fragment进行管理
*/
private FragmentManager mFragmentManager;
//记录Fragment的位置
private int position = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main_fragment);
// 初始化布局元素
initViews();
mFragmentManager = getFragmentManager();
// 第一次启动时选中第0个tab
setTabSelection(position);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
position = savedInstanceState.getInt("position");
setTabSelection(position);
super.onRestoreInstanceState(savedInstanceState);
}
@Override
protected void onSaveInstanceState(Bundle outState) {
//记录当前的position
outState.putInt("position", position);

}
/**
* 在这里获取到每个需要用到的控件的实例,并给它们设置好必要的点击事件。
*/
private void initViews() {
mMessageLayout = findViewById(R.id.message_layout);
contactsLayout = findViewById(R.id.contacts_layout);
mNewsLayout = findViewById(R.id.news_layout);
mSettingLayout = findViewById(R.id.setting_layout);
messageImage = (ImageView) findViewById(R.id.message_image);
contactsImage = (ImageView) findViewById(R.id.contacts_image);
newsImage = (ImageView) findViewById(R.id.news_image);
settingImage = (ImageView) findViewById(R.id.setting_image);
mMessageText = (TextView) findViewById(R.id.message_text);
mContactsText = (TextView) findViewById(R.id.contacts_text);
newsText = (TextView) findViewById(R.id.news_text);
settingText = (TextView) findViewById(R.id.setting_text);
mMessageLayout.setOnClickListener(this);
contactsLayout.setOnClickListener(this);
mNewsLayout.setOnClickListener(this);
mSettingLayout.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.message_layout:
// 当点击了消息tab时,选中第1个tab
position=0;
setTabSelection(position);
break;
case R.id.contacts_layout:
// 当点击了联系人tab时,选中第2个tab
position=1;
setTabSelection(position);
break;
case R.id.news_layout:
// 当点击了动态tab时,选中第3个tab
position=2;
setTabSelection(position);
break;
case R.id.setting_layout:
// 当点击了设置tab时,选中第4个tab
position=3;
setTabSelection(position);
break;
default:
break;
}
}

/**
* 根据传入的index参数来设置选中的tab页。
*
* @param index
* 每个tab页对应的下标。0表示消息,1表示联系人,2表示动态,3表示设置。
*/
private void setTabSelection(int index) {
// 每次选中之前先清楚掉上次的选中状态
clearSelection();
// 开启一个Fragment事务
FragmentTransaction transaction = mFragmentManager.beginTransaction();
// 先隐藏掉所有的Fragment,以防止有多个Fragment显示在界面上的情况
hideFragments(transaction);
switch (index) {
case 0:
// 当点击了消息tab时,改变控件的图片和文字颜色
messageImage.setImageResource(R.drawable.message_selected);
mMessageText.setTextColor(Color.WHITE);
if (mMessageFragment == null) {
// 如果MessageFragment为空,则创建一个并添加到界面上
mMessageFragment = new MessageFragment();
transaction.add(R.id.content,
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 5.1 Fragment基本概述
  • Fragment 重叠 遮盖问题,fragment遮盖
  • 理解android中ListFragment和Loader,androidlistfragment
  • Android中Fragment的两种创建方式,androidfragment
  • Android Fragment 剖析,androidfragment
  • android fragment生命周期应用
  • Android 上千实例源码分析以及开源分析
  • Android Fragment生命周期,androidfragment
  • Android触摸事件(三)-触摸事件类使用实例
  • android Fragment详细讲述,包括问题隐患

相关文章

  • 2017-05-26Android系统 应用图标显示未读消息数(BadgeNumber) 桌面app图标的角标显示
  • 2017-05-26Android:应用宝省流量更新
  • 2017-05-26android 读中文文本文件,android中文
  • 2017-05-26Android GreenDAO3.0——介绍,androidgreendao3.0
  • 2017-05-222.4.7ListView的焦点问题
  • 2017-05-26【原创】Android ExpandableListView使用,expandablelistview
  • 2017-05-26上传单个文件到多台机器工具
  • 2017-05-26我的android学习经历,android学习经历
  • 2017-05-26android开发中常见布局的注意点,android开发布局
  • 2017-05-26Android 日常开发总结的技术经验 60 条,android60

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Android studio 插件安装 plugin
    • android:获取手机号码和姓名实现通讯录
    • cnbeta新闻资讯第三方客户端应用,cnbeta新闻资讯
    • onTouch和onTouchEvent,ontouch
    • Android:让WebView支持<input type=”file”…>元素,androidwebview
    • 深入理解RCU实现
    • ubuntu下安装AndroidStudio
    • Linux目录与文件权限的意义
    • XAMARIN.ANDROID SIGNALR 实时消息接收发送示例,xamarinsignalr
    • Android动态加载Dex机制解析

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有