2

私は、ユーザーが緯度と経度の2つのEditTextビューに座標のセットを入力するオプションを持っているアプリに取り組んでいます。入力された座標/位置が地図上に表示されます。これは非常に効果的です。ただし、ユーザーが無効な値を入力するとアプリがクラッシュするため、それを防ぐ必要があります。

Latitudes / Longitudesの値は、たとえば35.27である必要があります。アプリがクラッシュする原因は、ドット「。」が複数ある場合です。例:33.23.43。入力した値にドットが1つしかないか確認するにはどうすればよいですか?

私はこの分野での経験があまりなく、Androidはまだ初めてなので、どんな助けでも大歓迎です。

4

4 に答える 4

1

取得した文字列の長さを確認することをお勧めしますが、1.5と153.163はどちらも有効であるため、機能しません。`try/catchステートメントを使用することをお勧めします。例えば

try{
    //do what ever you do with the numbers here
catch(Exception e){
//the user has inputted an invalid number deal with it here
}
于 2013-01-22T20:15:20.617 に答える
1

チェックアウト

Android EditText:setFilters例:数値テキストフィールドのパターンと長さの制限。

それはあなたが望むものかもしれません。

于 2013-01-22T20:18:33.213 に答える
0
bool badInput = countChar(s, '.')  > 1;

ここで、countCharは

int countChar(string s, char c)
{
    int counter = 0;
    for( int i=0; i<s.length(); i++ ) {
        if( s.charAt(i) == c ) {
            counter++;
        } 
    }
    return counter;
}
于 2013-01-22T19:59:02.917 に答える
0

単にaを使用しregexpて、入力の有効性を確認してください。

Pattern p = Pattern.compile("^(-)?\d*(\.\d*)?$");
Matcher m = p.matcher(inputString);
if (m.find()) { 
    ////Found
}
else {
  //Not found
}

次に、フィールドにを実装しfocus listenerて、この妥当性テストを実行します。

または: xmlからもこれを行うことができます。

XMLで属性を追加しますeditText

android:inputType="number|numberSigned|numberDecimal" 

符号付き浮動小数点数の場合。

ありがとう。

于 2013-01-22T20:19:39.380 に答える