在做使用Intent启动图片裁剪时遇到一个问题:
分开调用Intent#setData();Intent#setType();这两个方法时,程序无法正确运行,但使用Intent#setDataAndType();程序正常运行。
原因分析:
查看Intent#setData(),Intent#setType()源码:
public Intent setData(Uri data) { mData = data; mType = null; return this; }
public Intent setType(String type) { mData = null; mType = type; return this; }
分别调用Intent#setData(),Intent#setType()时,会把另一个值设置为null,并覆盖原有值。所以如果分别调用这两个方法那么永远只有一个会被正确地赋值。
所以在这两个属性都要赋值时要使用Intent#setDataAndType():
public Intent setDataAndType(Uri data, String type) { mData = data; mType = type; return this; }