各种细的知识点(二)
2016-07-28 14:52
531 查看
if (str == null || str.isEmpty()) { //其中的内容为空 isEmpty() }
if (str == null || str.length() <= 0) { //长度方法 }
if (str == null || "".equals(str)) { //"".equals(str) ""一定要写在前面 }
判断集合非空的方法:
if (list == null || list.size() == 0) { //(list!=null) }
//用于判断两个字符串是否相等 此时表示字符串null TextUtils.equals("null", str);json:
JSONObject has() JSONException getJSONArray("") getJSONObject(i) getString(age)(获取不同类型的属性值)
JSONObject object = new JSONObject(); if (object.has("OrderQuantity")) { //返回值为boolean类型 这个json对象是否有此属性 has()方法 try { String pid = object.getString("ProductID"); //获取属性的值 } catch (JSONException e) { e.printStackTrace(); } }
private void initJson() { String json = ""; try { JSONObject jsonObject = new JSONObject(json); // json里面只有json对象和json数组 JSONArray list = jsonObject.getJSONArray("list"); for (int i = 0; i < list.length(); i++) { //json里面存储的是json对象 获取每一个json对象 JSONObject jsonObj = list.getJSONObject(i); String id = jsonObj.getString("id"); String packageName = jsonObj.getString("packageName"); String age = jsonObj.getString("age"); int ages = Integer.parseInt(age); //json对象属性值的类型是不确定的,不一定都是String int score = jsonObj.getInt("score"); long time = jsonObj.getLong("time"); AppInfo appInfo = new AppInfo(id, packageName, ages, score, time); } } catch (JSONException e) { //解析json会抛出异常,一定要注意 Log.e(TAG, e.getMessage()); } }
for循环:
//一定要记住这种写法 for (String str : list) { str.length(); }
fragment与activiity之间传递数据(记住这种写法以及两个方法/ Bundle类/ getActivity() ) 编写一个接口实现
activity与fragment之间的数据传递,关键是哪两个方法?
1.Fragment中通过getActivity()然后进行强制转化,调用Activity中的公有方法
((XXXXActivity)getActivity()).fun();(调用父类中的方法)
2.Activity在切换Fragment的时候,通过setArguments向Fragment传递参数,Fragment通过getArguments();获得从activity中传递过来的值。
setArguments(Bundle bundle)
3.Activity实现一个接口,Fragment在onAttach方法中,将该Activity转化为该接口,在需要调用的时候回调。
多个Fragment之间,可以通过Activity复用很多代码,提高效率。
使用Bundle传递数据:
两个页面之间使用Bundle传递数据。intent.putExtras(bundle).
Bundle可以传递序列化数据
getIntent() 获取的intent要判断是否为空? FragmentManager carGoodsFragment.setArguments(bundle); Bundle bundle = getArguments(); FragmentTransaction
findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //在这里需要获取一个fragment实例,那我通过返回值给你, carGoodsFragment = CarGoodsFragment.getInstance("陈如水", 22); //使用fragment替换布局 (FragmentManager) FragmentManager fm = getSupportFragmentManager(); FragmentTransaction ft = fm.beginTransaction(); ft.replace(R.id.layout, carGoodsFragment); ft.commit(); } });
//目的是获取一个CarGoodsFragment,并且能够向此Fragment传递参数 public static CarGoodsFragment getInstance(String name, int age) { CarGoodsFragment carGoodsFragment = new CarGoodsFragment(); Bundle bundle = new Bundle(); bundle.putString("name", name); bundle.putInt("age", age); carGoodsFragment.setArguments(bundle); //关键是两个方法和bundle的使用、以及一种思想 return carGoodsFragment; }
@Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); //获取传递过来的数据 Bundle bundle = getArguments(); String name = bundle.getString("name"); int age = bundle.getInt("age"); //通过这种方式获取activity的实例 FragmentManager fm = ((MainActivity) getActivity()).getSupportFragmentManager(); }
//此方法用于向activity传递数据 @Override public void onAttach(Activity activity) { super.onAttach(activity); callBack = ((CallBack) getActivity()); myListener = ((MyListener) getActivity()); }
Bitmap类的使用
private void initBittmap() { //Bitmap类的使用 Bitmap bitmap = Bitmap.createBitmap(400, 800, Bitmap.Config.ARGB_8888); //Bitmap对象在不使用时,调用recycle()方法释放内存!否则容易造成内存泄露。 bitmap.recycle(); }
private void initFiles() { //getFilesDir()方法用于获取/data/data//files目录(当前应用程序默认的数据存储目录,目录指3文件夹) File filesDir = this.getFilesDir(); //getCacheDir()方法用于获取/data/data//cache目录 File cacheDir = this.getCacheDir(); }
SharedPreferences类:
1)一种轻型的数据存储方式
2)本质上是基于xml文件存储key-value键值对数据
3)通常用来存储一些简单的配置信息。
SharedPreferences对象本身只能获取数据而不支持数据的修改和存储,存储要通过Editor编辑对象来实现
实现SharedPreferences存储的步骤是:
1)获取SharedPreferences对象;
2)获取SharedPreferences.Editor对象
3)通过Editor接口的putXXX方法保存key-value对,其中的XXX表示不同的数据类型
4)通过Editor接口中的commit()方法提交键值对。
private void initSharedPreferences() { //首选项的使用 SharedPreferences sp = this.getSharedPreferences("config", MODE_PRIVATE); SharedPreferences.Editor editor = sp.edit(); editor.putString("name", "陈如水"); editor.putInt("age", 22); editor.putLong("time", System.currentTimeMillis());//系统身上还有关闭虚拟机的方法 editor.putBoolean("isCollect", true); editor.commit(); }
构造方法的作用:给对象的数据进行初始化
格式:方法名与类名相同、没有返回值连void都没有
注意事项:如果你不提供构造方法,系统会给一个默认的构造方法;如果手动写了构造方法,系统将不再提供。
构造方法是可以重载的
任何类都有构造方法。
当你new A()时,默认你有一个有无参构造方法A()的方法里的第一句,会自动加上一个super();的方法,
这句就是调用父类构造方法的意思,这是java规定的规则。
类必须调用父类的构造函数,在子类构造函数前应先写上super.(),若你没写这句,系统默认自动给你调用父类中无参数的构造函数(但是如果你父类没有无参的构造函数,而你又没super.()的话
编译就会报错!)。
调用父类中的方法与调用父类的构造方法不一样.
super代指父类的对象 super.onCreate(savedInstanceState); @Override 的作用是重写父类的方法
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_car_goods_details); }
super有两个用法:
1、放在子类构造方法首行,是调用父类的构造方法。
2、在子类的方法中可以通过super.来调用父类的同名成员变量或者方法。
AndroidStudio的时候提非法字符: '\ufeff' 解决方案?
应该是隐蔽字符BOM的问题.用Notepad++打开,果然原创作者没用采用(UTF-8 无DOM)模式。
我们只需要点击把它转为UTF-8无BOM格式编码即可。
AS显示快速文档
以后一定要注意, 封装对象时 不能多层嵌套(一定不能) 都抽取出来(不能使用嵌套内部类的形式)
内聚是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事(只做好这一件事情,和其他的没联系)。它描述的是模块内的功能联系;所谓高内聚是指一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。
(耦合可以理解成依赖)
回调方法中是否会处理业务逻辑,会导致接口回调的写法不一样。
构造方法的作用
布局文件里面,凡是以layout开头的属性都是经过父容器批准才能生效的.
activity的生命周期:
1)显示状态 onCreate() onStart() onResume()
2)看不见状态 onPause() onStop()
3)销毁状态 onDestory()
java中4种修饰符访问权限的区别,再一次说明java语言的严谨性和安全性. private 修饰的成员变量和成员方法,只能在本类中使用。(就算创建类的对象也不能调用)
相关文章推荐
- js创建jsonArray传输至后台及后台全面解析
- Oracle索引(B*tree与Bitmap)的学习总结
- JSON字符串转换JSONObject和JSONArray的方法
- 如何使用Matrix对bitmap的旋转与镜像水平垂直翻转
- Android Fragment 基本了解(图文介绍)
- C语言实现的bitmap位图代码分享
- Android程序开发之Fragment实现底部导航栏实例代码
- Android应用开发中Fragment与Activity间通信示例讲解
- C++中Cbitmap,HBitmap,Bitmap区别及联系
- 学习Ruby你需要了解的相关知识(rvm, gem, bundle, rake, rails等)
- Rails bundle命令安装mysql gem包出错的解决方法
- bitmap 索引和 B-tree 索引在使用中如何选择
- ASP.NET MVC中使用Bundle打包压缩js和css的方法
- JSONObject使用方法详解
- Android的Fragment的生命周期各状态和回调函数使用
- 浅谈Android App开发中Fragment的创建与生命周期
- 实例探究Android开发中Fragment状态的保存与恢复方法
- Android Fragment的使用方法(翻译)
- 实例探究Android应用编写时Fragment的生命周期问题
- Android App开发中创建Fragment组件的教程