Activity还是getApplicationContext、Fragment

news/2024/7/8 1:07:05

Activity还是getApplicationContext

显示dialog必须使用Activity

使用adapter中初始化convertView最好使用Activity

显示地图时必须使用ApplicationContext

其他绝大的情况下两者都可以

选择ApplicationContext肯定没有问题

选择Activity可能会导致Activity对象不能被回收,导致内存泄漏

在视图对象中使用Activity作为context一般没问题,是因为视图对象在Activity中加载的,生命周期往往比activity短或者差不多

Fragment

1.理解

    是从Android3.0开始新增的概念, 意为碎片。为了更好的运用越来越大的屏幕空间而生,目前已经成为流行的开发方式。
    Fragment是一种可以嵌入在Activity当中的UI片段
    用来组建Activity界面的局部模块, 也可以说一个Actiivty界面可以由多个Fragment组成
    其行为与Activity很相似, 有自己对应的布局(包含具体的View), 它有自己的生命周期,接收自己的输入事件,并且可以从运行中的activity中添加或移除
    一个fragment必须总是嵌入在一个activity中,同时fragment的生命周期受activity的影响
    本质上会产生一个FrameLayout,它加载的布局为其子布局

2.关于android-support-v4.jar兼容包

    它是什么?
        google 提供的能兼容到api4(1.6)的兼容jar包
        Android3.0(11)的SDK中添加了不少新的更强大的API供开发者使用
        v4包中包含了android3.0推出的一些新的API
    为什么要用它?
        如果项目中直接使用了最新的API, 不能安装到低版本的手机中的
        而使用V4兼容包开发就可以安装到低版本(1.6)的手机
    重要API
        Fragment
        ViewPager
            FragmentStatePagerAdatper
            FragmentPagerAdapter
    注意
        在使用Fragment及其相关API时, 要导V4中定义的
        如何关联libs下jar包的源码

3.相关API

    Fragment
        View onCreateView()
        onActivityCreated()
            当Activity创建好
        getActivity()
            宿主
        setArguments(), getArgument()
    ListFragment
        setListAdapter(adapter)
        onListItemClick()
        getFragmentManager()
    FragmentActivity
        getSupportFragmentManager()
    FragmentManager
        beginTransaction()
    FragmentTransaction
        add(), replace(), remove()
        show() <-->hide()
        commit()
        addToBackStack()

4.使用

    Fragment的静态加载
        1. 定义Fragment的子类, 并在onCreateView()中加载一个布局文件
        2. 在布局文件中通过<fragment>指定自定义Fragment
        3. 我们的Activity必须继承于FragmentActivity
    Fragment的动态加载
        1. 定义Fragment的子类, 并在onCreateView()中加载一个布局文件
        2. 我们的Activity必须继承于FragmentActivity
        3. 在代码中, 动态创建Fragment对象, 并添加到指定的ViewGroup中
            add
            replace
            remove
            hide
            show
    Fragment的生命周期
        生命周期状态
            运行状态
                可见,可操作
            暂停状态
                可见,但不可操作
            停止状态
                存在,但不可见
            死亡状态
                对象不存在
        生命周期方法
            onAttach()
                当fragment与Activity建立关联时调用
            onCreate()
            onCreateView()
                为fragment创建视图(加载布局)时调用
            onActivityCreated()
                与fragment相关联的Activity已经创建完毕时候调用
            onStart()
            onResume()
            onPause()
            onStop()
            onDestroyView()
                当与fragment相关联的视图被移除的时候调用
            onDestroy()
            onDetach()
                当fragment与Activity解除关联的时候调用
        测试用例
            添加Fragment对象显示
            home到桌面
            回到应用
            replace为其它Fragment
            返回到本身的Fragment
            退出应用

5.应用Fragment

    应用Fragment的两种加载方式
    使用ListFragment显示列表
        setListAdapter()
    Fragment携带数据
    小技术:如何让选择项变色
        android:background="?android:attr/activatedBackgroundIndicator"
        设置ListView为单选模式
            getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE)
        设置默认选中第一个
            getListView().setItemChecked(0, true)

http://www.niftyadmin.cn/n/3649069.html

相关文章

网页开端第二次培训笔记

form标签性质及相关属性 input元素相关内容及框内属性、按钮属性 label标签、button按钮、select 常用属性&#xff1a;value设置值&#xff0c;selected 设置选中状态

BaseAdapter的封装(ListView)

首先第一步&#xff1a;我们看下我们一般情况下我们的BaseAdapter的使用 public class ProductAdapter extends BaseAdapter {private List<Product> productList;public ProductAdapter(List<Product> productList) {this.productList productList; }Override …

minio.exe怎么安装_如何在Ubuntu 18.04上使用Minio设置对象存储服务器

minio.exe怎么安装The author selected the Open Internet/Free Speech Fund to receive a donation as part of the Write for DOnations program. 作者选择了“ 开放互联网/言论自由基金会”作为“ Write for DOnations”计划的一部分来接受捐赠。 介绍 (Introduction) From…

[收藏]笑傲职场--如何获得影响力、权力和晋升

笑傲职场(如何在工作中获得、扩大影响力、权力和晋升&#xff09;以下是初稿大纲&#xff0c;有时间再细细道来。      序言&#xff1a;不走弯路就是捷径   内容&#xff1a;   一. 定位的原则   1、 你不能永远同时走两条钢丝   2、 永远站在主流之列   3、 一…

android桌面组件开发

Widget是Android1.5版所引进的特性之一.Widget,可让用户在主屏幕界面及时了解程序显示的重要信息.标准的Android系统已包含几个Widget的示例,如模拟时钟,音乐播放器等. 1、AppWidget 框架类 1、AppWidgetProvider &#xff1a;继承自 BroadcastRecevier &#xff0c; 在AppWid…

网页开端第三次培训笔记

CSS主要内容 1.CSS是一种用来表现HTML或XML等文件样式的计算机语言&#xff0c;是用来美化页面用的&#xff0c;没有网页 则CSS毫无用处&#xff0c;所以CSS需要依赖HTML展示其功能。 CSS 2.CSS基本语法 css样式由选择器和一条或多条以分号隔开的样式声明组成&#xff0c; …

流式布局的使用——使用固定布局

首先可以看下效果图 简单布局使用: <com.hbwj.p2pinvest.ui.FlowLayoutandroid:id"id/flow_hot"android:layout_width"match_parent"android:layout_height"wrap_content"android:background"android:color/holo_blue_light">&l…

Android中关于横竖屏问题

在以前的版本中只要在AndroidManifest.xml文件中对activity指定android:configChanges"keyboardHidden|orientation"属性&#xff0c;转屏的时候就会不再重新调用OnCreate()函数&#xff0c;而是调用onConfigurationChanged()。 但是在自从android3.2以后&#xff0c…