我正在尝试编写一个可以从图库中选择的图片中选择颜色的应用。在对其中一个覆盖进行编码时,我收到了此消息。
Incompatible types.
Required: java.lang.String[]
Found: java.lang.String
代码如下:
@Override
protected void onActivity(int requestCode, int resultCode, Intent data) {
if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null !=data) {
Uri selectedImage = data.getData();
String[] filePathColumn = (MediaStore.Images.Media.DATA);
Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
}
}
此onActivity
方法出现问题。如何解决此错误?
答案 0 :(得分:1)
String[] filePathColumn = (MediaStore.Images.Media.DATA);
此行尝试通过在括号()
中放置一个字符串来创建数组。但括号只是澄清了操作的顺序;他们什么都不做。
要创建数组,请将其作为数组初始值设定项括在大括号{}
中。
String[] filePathColumn = {MediaStore.Images.Media.DATA};
答案 1 :(得分:0)
MediaStore.Images.Media.DATA
只是一个String对象,而不是一个字符串数组。因此,将其分配给String []
会引发错误。这就像说一个页面等于一本书。
您可以通过两种方式解决此问题:
使用大括号初始化数组,其值为in-line:
String[] filePathColumn = { MediaStore.Images.Media.DATA };
或者单独进行:
String[] filePathColumn = new String[1];
filePathColumn[0] = MediaStore.Images.Media.DATA;