Не удается преобразовать из строки [] в строку - PullRequest
1 голос
/ 26 мая 2011

Вот мой код .. Я хочу найти только название города по широте и долготе .. Теперь я получаю это:

"Address[addressLines=[0:"Mustamäe tee 145",1:"12918 Tallinn",2:"Estonia"],feature=145,admin=Harju County,sub-admin=null,locality=Tallinn,thoroughfare=Mustamäe tee,postalCode=12918,countryCode=Estonia,countryName=null,hasLatitude=true,latitude=59.4123264,hasLongitude=true,longitude=24.6903851,phone=null,url=null,extras=null]"

Я пытался преобразовать его в строку и разделить его ..я сделал массив строк, но когда я пытаюсь присвоить "cityName" массиву строк "name", я получаю эту ошибку - "Несоответствие типов: невозможно преобразовать из String [] в String"

Можете ли вы сказать мне, гдея не прав?

import java.io.IOException;
import java.util.List;
import java.util.Locale;
import android.content.Context;
import android.location.Address;
import android.location.Geocoder;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
public class GPSHelper {
static double latitude;
static double longitude;
static String[] name = new String[5];

public static void getCity(LocationManager lm, Context appContext) {

    Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
    longitude = location.getLongitude();
    latitude = location.getLatitude();
    final LocationListener locationListener = new LocationListener() {
        public void onLocationChanged(Location location) {
            longitude = location.getLongitude();
            latitude = location.getLatitude();
        }

        public void onProviderDisabled(String arg0) {
            // TODO Auto-generated method stub

        }

        public void onProviderEnabled(String arg0) {
            // TODO Auto-generated method stub

        }

        public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
            // TODO Auto-generated method stub

        }
    };

    lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000, 10, locationListener);

    double latitude = location.getLatitude();
    double longitude = location.getLongitude();
    Geocoder userLocation = new Geocoder(appContext, Locale.getDefault());   
    List<Address> cityName;
    try {
        cityName = userLocation.getFromLocation(latitude, longitude, 1);
        if(cityName != null && !cityName.isEmpty()) {
            for(int i=0; i<5; i++){

            name[i] = cityName.get(0).toString().split("");

            }
        }
    } catch (IOException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
}

}

Ответы [ 7 ]

3 голосов
/ 26 мая 2011

Все ответы здесь в порядке. Но вот что мне интересно, почему вы используете разделение на пустой символ?

Знаете ли вы, что он возвращает массив из отдельных символов (и ничего при запуске)?

Оформить заказ код:

String str ="dasd";
String[] strr = str.split("");
for(int i=0; i < strr.length;i++)
    System.out.println("i="+i+";str="+strr[i]);

Выход:

i=0;str=
i=1;str=d
i=2;str=a
i=3;str=s
i=4;str=d

Я бы предположил, что, поскольку cityName.get(0) возвращает объект Address, у него есть метод, который вернет вам его имя, как показано ниже.

name[i] = cityName.get(0).getName();

Надеюсь, это поможет.

2 голосов
/ 26 мая 2011
name[i] = cityName.get(0).toString().split("");

name[i] относится к типу String, а cityName.get(0).toString().split("") относится к типу String[]

1 голос
/ 26 мая 2011
name[i] = cityName.get(0).toString().split("");

здесь name [i] будет содержать только строку, но метод split ("") нуждается в массиве строк в левой части.

Это для цикла действительно нужно ?? Как удалить цикл for и кодировать его как

   if(cityName != null && !cityName.isEmpty()) {         

        name[] = cityName.get(0).toString().split("");

    }
0 голосов
/ 26 мая 2011

метод Split возвращает массив String;поэтому, когда вы сделаете это:

name[i] = cityName.get(0).toString().split("");

, он вернет массив строк, который будет содержать все буквы вашей строки,

0 голосов
/ 26 мая 2011

У меня нет опыта работы с Android, поэтому я не знаю, что должны возвращать эти методы, но String.split вернет массив String.И имя [я] является только строкой.Итак, вы пытаетесь присвоить массив String простой строке.

0 голосов
/ 26 мая 2011

Следующая строка неверна:

name[i] = cityName.get(0).toString().split("");

(как, вероятно, указывает сообщение об исключении).Действительно, вы пытаетесь инициализировать name[i], который является строкой, с результатом метода split, который возвращает массив строк.

0 голосов
/ 26 мая 2011
cityName.get(0).toString().split("");

Возвращает String[] как результат, но name[i] должно быть String, а не String[]

Почему вы делите?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...