2011-10-26 91 views
0

我的应用程序使用GeoCoder不断返回字符串为true。这里是我的代码。Geocoder始终返回true

public boolean address(){ 
     Geocoder geoCoder = 
      new Geocoder 
      (getBaseContext(), Locale.getDefault()); 

      try { 
       List<Address> addresses = geoCoder.getFromLocation(LocationManagerHelper.getLatitude()/1E6, LocationManagerHelper.getLongitude()/1E6, 1); 

       String addes = ""; 
       if (addresses.size() > 0) 
       { 
        for (int i=0; i<addresses.get(0).getMaxAddressLineIndex(); 
         i++) 
         addes += addresses.get(0).getAddressLine(i) + "\n"; 
       } 
      } 
      catch (IOException e) {     
       e.printStackTrace(); 
      } 
      return true; 


} 

我将其称为文本视图。

add.append(""+ address() 
      + '\n'); 

它的工作原理有点除了它不显示的地址,改为true

任何一个可以告诉我这是为什么?

谢谢。

+1

因此,请等待:您定义了一个返回“true”的address()方法 - 查看您发布的代码块中右括号之前的最后一行 - 并且您发现令人惊讶的是,当您称其为附加结果到一个'TextView',显示的文本是'true'? –

+0

@Giulio Piancatelli,我确实认为我的回归声明是问题所在。我需要知道什么切换到。 – Christian

回答

1

需要初始化结果String变量try块,然后将方法的返回类型更改为String,并且在用来自地址的行增强后返回结果String

public String address() { 
    Geocoder geoCoder = new Geocoder(getBaseContext(), Locale.getDefault()); 
    String result = ""; 
    try { 
     List<Address> addresses = 
      geoCoder.getFromLocation(LocationManagerHelper.getLatitude()/1E6, 
            LocationManagerHelper.getLongitude()/1E6, 
            1); 
      if (addresses.size() > 0) { 
       Address address = addresses.get(0); 
       for (int i = 0; i < address.getMaxAddressLineIndex(); i++) 
        result += address.getAddressLine(i) + "\n"; 
      } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    return result; 
} 

但是,真的,这是基本 Java编程,所以钻研的框架如Android之前,我会由衷地建议你先学习语言。

+0

好吧,所以现在我不会变成真或者-1,这样就行了。但我仍然没有得到经度和纬度的地址。我猜我需要做其他的事情才能得到一个地方的地址? – Christian

+0

这取决于你在'LocationManagerHelper'中有什么我相信。 –

+0

'LocationManagerHelper'里面的东西都是经纬度的东西。我的印象是,我可以从经度和纬度获得实际地址。 – Christian

2

您需要使用return关键字,并更改方法的返回类型为String返回地址字符串:

public String address(){ 
    Geocoder geoCoder = new Geocoder(getBaseContext(), Locale.getDefault()); 
    String result = ""; 

    try { 
     List<Address> addresses = geoCoder.getFromLocation(LocationManagerHelper.getLatitude()/1E6, LocationManagerHelper.getLongitude()/1E6, 1); 

     if (addresses.size() > 0) 
     { 
      for (int i=0; i<addresses.get(0).getMaxAddressLineIndex(); i++) 
       result+= addresses.get(0).getAddressLine(i) + "\n"; 
     } 
    } 
    catch (IOException e) {     
     e.printStackTrace(); 
    } 

    return result; 
} 
+0

好吧,我不再真实,但得到-1? – Christian

+0

尽管它不会让我做'结果',所以我不得不将它改为'RESULT_OK',而不是将方法返回类型更改为'string',为了使其工作,我不得不使用'int'。 – Christian

+0

int将返回一个数字,因此返回-1。你是否用大写字母S来尝试字符串。另外,我改变了变量的名字以便确保你也改变了代码中的变量声明。 – NickLH