2017-09-12 58 views
1

我正在使用谷歌地图在android studio中。我已经在地图上创建标记并向标记添加自定义信息窗口。当我点击标记时,我想将标记的片段(当前是一个字符串可以说“01345485645”)存储到一个长变量中。这个整数然后用于在点击按钮时发出呼叫或发送消息。如何将字符串转换为整数类型android

这里是标记点击事件的代码:当我点击按钮,拨打电话或存储在长PHONE_NUMBER的唯一价值似乎是00

发送消息

private long phone_number; 

@Override 
      public View getInfoContents(Marker marker) { 
       View v = getLayoutInflater().inflate(R.layout.custom_info_window, null); 
       TextView tv_name = (TextView) v.findViewById(R.id.tv_name); 
       tv_name.setText(marker.getTitle()); 

       try { 
        phone_number = Integer.parseInt(marker.getSnippet().toString()); 
       } catch(NumberFormatException nfe) { 
        System.out.println("Could not parse " + nfe); 
       } 
       return v; 
      } 
     }); 

代码工作,除了罚款

Intent smsIntent = new Intent(Intent.ACTION_SENDTO, Uri.parse("sms:"+phone_number)); 

有什么建议吗?

编辑:

我用

long phone_number = Long.valueOf(marker.getSnippet().toString()).longValue(); 
+0

你检查你是从 “marker.getSnippet” 得到什么价值? – Umair

+0

你可以发布你的onclick代码片段 – MadScientist

+0

而不是解析它也许你可以使用'TextUtils.isDigitsOnly()' 或者如果你想要更严格的检查, ://github.com/googlei18n/libphonenumber – chronogenre

回答

1

尝试这种使用Long.valueOf(String s).longValue()因为整数(32位机)得到了解决办法是32位,范围从-32768到+32767 int变量数,范围在-2147483648到2147483647之间。

try { 
    long phone_number = Long.valueOf(marker.getSnippet().toString()).longValue(); 
} catch(NumberFormatException nfe) { 
    Log.e("NumberFormatException",e+""); 
} 
+0

感谢它的工作:) –

+0

最受欢迎@ U.Ahsan享受codding –

1
Integer.parseInt(string_value); 

Integer.valueOf(string_value); 
+0

请提及为什么downvoted?如果答案有任何问题,请告诉我。 –

0
String s="56"; 
int i = Integer.parseInt(s); 
long lg = Long.parseLong(s);