不兼容的类型。必需:java.lang.String []找到:java.lang.String

时间:2018-03-14 20:36:59

标签: java android

我正在尝试编写一个可以从图库中选择的图片中选择颜色的应用。在对其中一个覆盖进行编码时,我收到了此消息。

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方法出现问题。如何解决此错误?

2 个答案:

答案 0 :(得分:1)

String[] filePathColumn = (MediaStore.Images.Media.DATA);

此行尝试通过在括号()中放置一个字符串来创建数组。但括号只是澄清了操作的顺序;他们什么都不做。

要创建数组,请将其作为数组初始值设定项括在大括号{}中。

String[] filePathColumn = {MediaStore.Images.Media.DATA};

答案 1 :(得分:0)

MediaStore.Images.Media.DATA只是一个String对象,而不是一个字符串数组。因此,将其分配给String []会引发错误。这就像说一个页面等于一本书。

您可以通过两种方式解决此问题:

  1. 使用大括号初始化数组,其值为in-line:

    String[] filePathColumn = { MediaStore.Images.Media.DATA };
    
  2. 或者单独进行:

    String[] filePathColumn = new String[1];
    filePathColumn[0] = MediaStore.Images.Media.DATA;