android 知识点(未整理)

一.重写onBackPressed() 函数的时候

1.如果你要自己写finish(); 那可以去除super.onbackPressed()。

2.如果只是写其他代码,把代码放在super.onbackPressed()前面

   因为如果super是默认处理方法 如果没有这句话,返回键无效,如果放前面了就只有执行返回功能,而你写的代码却不执行了。


二.Button按钮text默认是全部大写,可以通过设置设置以下属性改变

 android:textAllCaps="false"


三. Intent的putExtra和bundle的区别
putExtra()的源码如下:

public Intent putExtra(String name, String value) {  
        if (mExtras == null) {  
            mExtras = new Bundle();  
        }  
        mExtras.putString(name, value);  
        return this;  
所以其实两者是没有区别的,putExtra一个个传和new Bundle其实是一样的。


四,读取手机联系人信息时的selection selectionArgs

比如要读取名为"tom"的联系人,一开始我以为selection应该这样写:

                “ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME = ?” 然后new String[]{"tom"};

然后发现怎么都找不到

后来想了想ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME并不是实际存在数据库的常量值,

所以selection写法是 ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME+“ = ?” 然后selectionArg跟上面一致


五.BitmapFactory.decodeStrem() 接收图片的时候报错。

之前在做一个图片下载器,参考网上许多资料都是用okhttp获得图片信息后:

InputStream in=response.body().byteStream();  
Bitmap bitmap=BitmapFactory.decodeStre
  都是这样的做法,但是就是运行失败,显示不出来图片。看了信息是抛出异常了,而且在Bitmap那句话出错,后来又百度了下原因,各种说法都有。

  具体解决方法:

InputStream in=response.body().byteStream();  
Bitmap bitmap=BitmapFactory.decodeStre
 不用InputStream 采用byte[]方法就完全可以。

 注:貌似不能重复调用body(),我之前用log打印出body()的信息然后再转换bitmap就报错,删除log就没问题,所以遇到的要注意下。

 response.body()


六.onCreatOptionsMenu方法中返回值的意思

    true:表示允许创建的菜单显示出来。

    false:创建的菜单无法显示。


七.隐式intent如果只靠action的话 必须在category指名为“android.intent.category.DEFAULT"


.shouldShowRequestPermissionRationale()
转载自:http://www.cnblogs.com/mengdd/p/4892856.html
如果app之前请求过该权限,被用户拒绝, 这个方法就会返回true.
如果用户之前拒绝权限的时候勾选了对话框中”Don’t ask again”的选项,那么这个方法会返回false.
如果设备策略禁止应用拥有这条权限, 这个方法也返回false.

九.虚线画不出来(画出来是实线)
需要关闭硬件加速虚线才能绘制出来,布局文件中使用的时候需要设置android:layerType="software"

十.setHasOptionsMenu()
fragment可以通过实现 onCreateOptionsMenu() 向 Activity 的选项菜单(并因此向应用栏)贡献菜单项。不过,为了使此方法能够收到调用,您必须在 onCreate() 期间调用 setHasOptionsMenu(),以指示片段想要向选项菜单添加菜单项(否则,片段将不会收到对 onCreateOptionsMenu() 的调用)。

十一.Parcelable序列化读写顺序要一致
    private Book(Parcel in) {
        bookName=in.readString();
        author=in.readString();
        publishDate=in.readInt();
    }
    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(bookName);
        dest.writeString(author);
        dest.writeInt(publishDate);
    }


你可能感兴趣的:(android)