2017-09-12 24 views
1

私はアンドロイドスタジオのgoogleマップで作業しています。私は既にマップ上にマーカーを作成し、マーカーにカスタム情報ウィンドウを追加する作業をしました。マーカーをクリックすると、マーカーのスニペット(現在は文字列で "01345485645"と言うことができます)を長い変数に格納します。この整数を使用して、ボタンクリック時に電話をかけたり、メッセージを送信したりします。ここで文字列をアンドロイドの整数型に変換する方法

は、マーカーのクリックイベントのコードです:

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

コードは、私が電話をかけるために、ボタンをクリックするか、メッセージを送信するときに、長いPHONE_NUMBERに保存されている唯一の値は00

ように見えることを除いて正常に動作します
Intent smsIntent = new Intent(Intent.ACTION_SENDTO, Uri.parse("sms:"+phone_number)); 

EDIT:(32ビット・マシン用)の整数であるため

私は

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

あなたが "marker.getSnippet" から得ているどのような値がチェックしていますか? – Umair

+0

あなたは、むしろそれは多分あなただけ使用して、それを検証することができますパースすぎ – MadScientist

+0

あなたのonclickのコードスニペットを投稿することができます 'TextUtils.isDigitsOnly()' またはあなたがあなた自身の正規表現を作成することも、より厳密なチェックをしたいか、あなたはこれを試すことができます場合は、HTTPS ://github.com/googlei18n/libphonenumber – chronogenre

答えて

1

を使用してソリューションを持っているが、この使用Long.valueOf(String s).longValue()を試してみてください32ビットであり、-2147483648〜2147483647の範囲の-32768〜+32767の整数可変数である。

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

ありがとうございました:) –

+0

大歓迎@ U.Ahsan楽しむコード –

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); 
関連する問題