号 manager.notify(1, notification); } 需要振动权限 android:name="android.permission.VIBRATE...如果你是在Fragment上操作,有一点点的不同,留意注释上的说明 @Override public View onCreateView(LayoutInflater inflater, ViewGroup...() NotificationManager manager = (NotificationManager) getActivity().getSystemService...(),Main3Activity.class); PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext...吐司(Toast) private Toast toast; public void showToast(String content) { //判断是否为空,避免生成多个Toast
Fragment概述 1.1 介绍 Fragment是一种可以嵌入在活动中的UI片段,能够让程序更加合理和充分地利用大屏幕的空间,出现的初衷是为了适应大屏幕的平板电脑,可以将其看成一个小型Activity...,又称作Activity片段。...()获得任何Fragment实例,然后进行操作 在Fragment中可以通过getActivity得到当前绑定的Activity的实例,然后进行操作。...备注: 如果在Fragment中需要Context,可以通过getActivity(),如果该Context需要在Activity被销毁后还存在,则使用getActivity.getApplicationContext...首先获取自己控件的引用 可以在onCreateView()中获取 public View onCreateView(LayoutInflater inflater, ViewGroup container
; /** * 懒加载Fragment 只有创建并显示的时候才会调用onCreateViewLazy方法 * * * 懒加载的原理onCreateView...但是要考虑onCreateView和setUserVisibleHint的先后问题所以才有了下面的代码 * * 注意: * 《1》原先的Fragment的回调方法名字后面要加个Lazy...,比如Fragment的onCreateView方法, 就写成onCreateViewLazy * 《2》使用该LazyFragment会导致多一层布局深度 * * LuckyJayce...onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); context = getActivity...().getApplicationContext(); } @Override public final View onCreateView(LayoutInflater inflater
=access_token){ // 不为空intent至主页 startActivity(new Intent(LoginActivity.this,MainActivity.class...)); }else{ // 空至授权界面 startActivity(new Intent(LoginActivity.this,OAuthActivity.class));...img","name"}, new int []{R.id.g_icon,R.id.g_text}); } @Override public View onCreateView...=null){ Picasso.with(getActivity().getApplicationContext()).load(user.getHeadimg()).into(headimg...().getApplicationContext()).load(data[5]).into(headimg);//头像 Picasso.with(getActivity().getApplicationContext
Fragment作为Android最基本,最重要的基础概念之一,也是Activity的好搭档,在开发中经常会和他打交道。...onDestroyView():当Fragment的UI从视图结构中移除时调用。 onDestroy():销毁Fragment时调用。...同样,Fragment可以通过getActivity()获取Activity的实例,也是可以执行方法。...不要使用getActivity()获取activity实例,容易造成空指针,因为如果fragment已经onDetach()了,那么就会报空指针。...也就是说切换fragment的时候有可能会多次onCreateView,所以需要注意处理数据。 由于可能多次onCreateView,所以我们可以把view保存起来,如果为空再去初始化数据。
Android Fragment用法的讲解.png Fragment组件 Android Fragment组件.png Fragment是Android 3.0的时候被引入的,主要目的是为了给大屏幕(如平板电脑...利用Fragment实现更好的用户体验。 图片 Fragment加载 静态加载:添加Fragment到Activity布局中,以xml的形式。...图片来源官方: 生命周期 onAttach(): 一旦片段与其活动相关联就被调用; onCreate(): 片段被调用创建; onCreateView(): 创建并返回相关的视图结构; onActivityCreated...(); Fragment方法 replace()为FragmentManager的方法。...add()添加 remove()删除 结语 本文主要讲解 Android Fragment用法知识点的讲解 下面我将继续对Java、 Android中的其他知识 深入讲解 ,有兴趣可以继续关注 小礼物走一走
的概念,中文意思为碎片,它的出现是为了更好展示UI的设计,让程序更加得到充分的展示。...onAttach(): 一旦片段与其活动相关联就被调用; onCreate(): 片段被调用创建; onCreateView(): 创建并返回相关的视图结构; onActivityCreated(...()中添加即可 图片 3.创建Fragment 创建一个Fragment的子类,继承Fragmennt类,重写onCreateView()方法。...MyFragment myFragment = getFragmentManager().findFragmentById(R.id.fragment); 接着通过调用getActivity()方法来获取当前片段和相关联的活动实例...男孩:px在Android中为最小元素单元,px为像素,pt是磅数的意思,在Android通常作为字体的单位来用~ 女孩:那dp和sp呢?
URL使用Glide来加载网络图片 ,当点击进入activity 加载网络过程中 退出activity 会报此错 今天有时间就索性研究下这个问题,就做个笔记,也希望能给同样碰到这个问题的小伙伴带来点帮助...(context) 中的context 我们点到源码中看一下 Glide.with() 是怎么实现的。...().getApplicationContext()); } else { android.app.FragmentManager fm = fragment.getChildFragmentManager...也就是当 activity.isDestroyed()为true的时候 同样的还有另外几个异常: You cannot start a load on a fragment before it is...挂载的Activity为空导致的 回顾使用的场景,是在联网请求成功之后调用的Glide 当执行到Glide.with();方法时,当前的Activity已经销毁了,所以才导致的这个问题。
前几篇文章介绍的底部菜单栏、图片循环自动轮播都非常常用,底部菜单栏也很常用,底部菜单栏是iOS的主要风格,而Android的风格则偏向侧滑菜单栏。...侧滑菜单栏也是很常用的,本篇为大家介绍下一个侧滑菜单栏,个人感觉很不错,这里只贴出关键的代码,学习下。 效果如下: ? fd.jpg 首先定义一个Fragment,用来展示侧滑菜单,添加一些事件。...().getResources().getStringArray(R.array.nav_drawer_labels); } @Override public View onCreateView...return true; } if (id == R.id.action_search){ Toast.makeText(getApplicationContext...set the toolbar title getSupportActionBar().setTitle(title); } } } Activity中的代码也很简单
购物商城应用的界面简洁、直观,操作易于上手,为用户提供了一个愉快的购物体验。...通过读取json数据文件,将商品数据解析为Shop对象列表,并将所有商品数据存储在dataAll列表中。...然后将dataAll列表中的商品添加到shopList列表中,并使用ShopAdapter作为ListView的适配器。...trim(); // 获取搜索框文本 if (TextUtils.isEmpty(searchText)) { // 搜索框为空时展示全部商品...在onCreateView方法中,它通过调用loadDataToListView方法来加载数据并将其设置到ListView上。
而创建 DialogFragment 有两种方式: 覆写其 onCreateDialog 方法 — ① 覆写其 onCreateView 方法 — ② 虽然这两种方式都能实现相同的效果,但是它们各有自己适合的应用场景...其他的和 ① 中的类似。...应用场景区别 文章一开始简单总结了方法 ① 和方法 ② 的应用场景,这里说明下: 从基本的用法中可以看到方法 ① 为简单的替代 Dialog 提供了非常方便的创建方式,比方法 ② 有优势 方法 ① 在使用了多线程...(例如网络请求)的情况下,不能正确的获取当前 Fragment 的状态,会产生空指针异常。...总结 以上是个人在实际开发过程中的一点总结和看法,希望你能抱着存疑的态度进行尝试,如果有新的观点或者文章中有不正确的地方,欢迎和我联系。
大家好,又见面了,我是你们的朋友全栈君。...判断Java对象是否为null的方法: 首先,直接使用 object == null 去判断,对象为null的时候返回true,不为null的时候返回false。然后,在object !...= null 为true的情况下,进一步去判断对象的所有属性是否为null。...实例:package com.gj5u.publics.util; import java.util.List; /** * 判断对象是否为空 * * @author Rex * */ public class...EmptyUtil { /** * 判断对象为空 * * @param obj * 对象名 * @return 是否为空 */ @SuppressWarnings(“rawtypes”) public
剩下的FragmentActivity方式,在布局文件中只需声明一个FragmentTabHost,然后在代码中为该Host控件调用addTab方法逐个添加标签页,所以正好用来个性化定制标签页。...); 这句代码把标签内容页建造在了编号为android.R.id.tabcontent的视图上,也就是布局文件中宽度和高度都是0dp的框架布局。...builder.create().show(); } } } 但是实际运行时发现偶尔会闪退,日志报错java.lang.NullPointerException,原因是构建对话框时发现mContext为空...既然如此,那就补充mContext是否为空的判断好了,只有mContext非空时才显示对话框,修改后的Fragment代码如下所示: public class TabFirstFragment extends...->onCreateView,显然开发者在setUserVisibleHint方法中弹窗时,App还没来得及在onCreateView方法中给mContext赋值;所以要想正常使用setUserVisibleHint
> <meta-data android:name="design_width_in_dp" android:value...="360"/> <meta-data android:name="design_height_in_dp" android:value=...(); //当 App 中出现多进程, 并且您需要适配所有的进程, 就需要在 App 初始化时调用 initCompatMultiProcess() //在 Demo 中跳转的三方库中的..., 如果为 true, App 内的字体的大小将不会跟随系统设置中字体大小的改变 //如果为 false, 则会跟随系统设置中字体大小的改变, 默认为 false //...//就需要提供三方库的设计图尺寸, 以及适配的方向 (以宽为基准还是高为基准?)
String toString(){ return JSONObject.toJSONString(this,true); } } 1.2 用JSON.toJSONString()获取的结果为空
例如:新闻应用可以使用一个片段在左侧显示文章列表,使用另一个片段在右侧显示文章—两个片段并排显示在一个 Activity 中,每个片段都具有自己的一套生命周期回调方法,并各自处理自己的用户输入事件。...我们应该将每个片段都设计为可重复使用的模块化 Activity 组件。...这特别重要,因为模块化片段让您可以通过更改片段的组合方式来适应不同的屏幕尺寸。 在设计可同时支持平板电脑和手机的应用时,您可以在不同的布局配置中重复使用您的片段,以根据可用的屏幕空间优化用户体验。...例如:仍然以新闻应用为例—在平板电脑尺寸的设备上运行时,该应用可以在Activity A 中嵌入两个片段。...Step 1:定义Fragment的布局 Step 2:自定义一个Fragment类,需要继承Fragment或者他的子类,重写onCreateView()方法 在该方法中调用:inflater.inflate
Object.keys(xxx).length==0 验证结果如下:… 前言:在实现业务逻辑的过程中,很多工程师都会遇到需要判断一个对象,数组是否为空的情景,很多时候我们在请求数据的时候都需要判断请求的对象数据是否为空...,如果直接使用,在数据请求为空时,控制台就会报错.因此我们需要给一个判断,如果数据存在就直接调用,不存在就创建空的对象/数组.下面狗尾草给大家整理了几种判断对象是否为空的方法,希望对大家有帮助. 1.我们在需要请求对象.../数组的下标或属性来判断是否为空 var oData = Obj.item !...来避免对象为空的错误.如果name为空,就以默认值(“!”后的字符)显示. ...,strFolderPath); if(AfxMessageBox(strMsg,MB_YESNO) == IDYES) { //… js判断字符是否为空的方法: //判断字符是否为空的方法 function
可以看到,对话框成功创建并显示出来,不过默认对话框有个讨厌的标题,我们怎么去掉呢:可以在onCreateView中调用getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE...MainActivity中需要实现我们的接口LoginInputListener,实现我们的方法,就可以实现当用户点击登陆时,获得我们的帐号密码了: c) MainActivity package...6、DialogFragment做屏幕适配 我们希望,一个对话框在大屏幕上以对话框的形式展示,而小屏幕上则直接嵌入当前的Actvity中。这种效果的对话框,只能通过重写onCreateView实现。...,如果是大屏幕则直接以对话框显示,如果是小屏幕则嵌入我们的Activity布局中 这个R.bool.large_layout是我们定义的资源文件: 在默认的values下新建一个bools.xml 为模拟器,右边为我的手机~~~~~ 7、屏幕旋转 当用户输入帐号密码时,忽然旋转了一下屏幕,帐号密码不见了~~~是不是会抓狂 传统的new AlertDialog在屏幕旋转时,第一不会保存用户输入的值
第一次发现这问题,记录一下,在适配器里面给TextView设置一个int类型的值,然后闪退报错,DeBug模式下查看了布局和id,均没有问题,再次查看日志输出,Caused By: android.content.res.Resources...$NotFoundException:String resource ID #0x86,发现有两个词引起了注意String Resources,才知道TextView在内部实现时设置的类型为String...,所以用String.valueOf(),这里再啰嗦几句,在String类型的转化问题上,String.valueOf()效率最高,因为虚拟机对它进行了特殊处理,其次是toString,最后是+""的拼接形式...,拼接String的形式内部实现其实就是toString,但是要相对复杂一些,拼接过程中产生了常量和一些判断条件,效率低下,详情见源码
上面两个页面都是 ViewPager + Fragment实现,Viewpager + Fragment情况下,fragment的生命周期因Viewpager的缓存机制而失去了具体意义 目前问题:每次进入...类自带方法setUserVisibleHint()判断当前fragment是否对用户可见,根据回调的isVisibleToUser参数来进行相关的逻辑判断。...但是直接根据isVisible判断就加载数据,可能onCreateView()方法并未执行完毕,此时就会出现NullPointerException空指针异常。...为了方便继承调用,将实现封装到了BaseFragment中 package com.jky.mobilebzt.fragment; import android.content.Context; import...= null) { toast.cancel(); toast = null; } if(getActivity()!