2017-09-12 2 views
1

Je travaille avec Google Maps dans le studio android. J'ai déjà travaillé sur la création de marqueurs sur la carte et l'ajout de fenêtres d'informations personnalisées aux marqueurs. Lorsque je clique sur le marqueur, je veux stocker l'extrait de marqueur (c'est-à-dire actuellement une chaîne de caractères, disons "01345485645") dans une variable longue. Cet entier est ensuite utilisé pour faire un appel ou envoyer un message sur un clic de bouton.Comment convertir une chaîne en type Integer en android

Voici le code pour l'événement click marqueur:

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; 
      } 
     }); 

Le code fonctionne très bien, sauf que lorsque je clique sur le bouton pour faire un appel ou envoyer un message la seule valeur stockée dans la longue phone_number semble être 00

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

Des suggestions?

EDIT:

J'ai la solution en utilisant

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

Avez-vous vérifié la valeur que vous obtenez de "marker.getSnippet"? – Umair

+0

pouvez-vous poster votre extrait de code onclick trop – MadScientist

+0

plutôt l'analyser peut-être vous pouvez simplement le valider en utilisant 'TextUtils.isDigitsOnly()' ou si vous voulez des contrôles plus strictes, vous pouvez créer votre propre regex ou vous pouvez essayer ce https : //github.com/googlei18n/libphonenumber – chronogenre

Répondre

1

essayer cette utilisation Long.valueOf(String s).longValue() parce que le nombre entier (pour la machine 32 bits) est 32 bits, et il va de -32768 à +32767 int nombres variables dans la gamme -2147483648 à 2147483647.

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

Merci, il a travaillé :) –

+0

plus bienvenus @ U.Ahsan profiter de codage –

1
Integer.parseInt(string_value); 

ou

Integer.valueOf(string_value); 
+0

S'il vous plaît indiquer pourquoi downvoted? Si quelque chose ne va pas avec la réponse s'il vous plaît faites le moi savoir. –

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