5

2つの編集テキストに設定エラーのコードを実装しました。

  • 最初に、nullまたは空の値のない文字列を取得します。
  • nullまたは空の値のない文字列を取得するための2番目であり、Double値が必要です。

コードは次のとおりです

import java.util.HashMap;
import java.util.Map;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class SearchPlaces extends Activity {
    EditText place;
    EditText distance;
    Button search;
    static String _place;
    static String _distance;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        place = (EditText) findViewById(R.id.place);
        distance = (EditText) findViewById(R.id.distance);
        search = (Button) findViewById(R.id.search);
        search.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Map<String, String> validate = new HashMap<String, String>();
                _place = place.getText().toString();
                _distance = distance.getText().toString();
                validate.put("placename", _place);
                validate.put("distancenumeric", _distance);
                if (!validateInputInformation(validate)) {
                    return;
                }
                if ((_place == "" && _distance == "")) {
                    Toast.makeText(getApplicationContext(),
                            "Please fill all the information",
                            Toast.LENGTH_SHORT).show();
                } else {
                    _place = place.getText().toString();
                    _distance = distance.getText().toString();
                    Intent placedist = new Intent(getApplicationContext(),
                            MainActivity.class);
                    Bundle bundle = new Bundle();

                    bundle.putString("place", _place);
                    bundle.putString("distance", _distance);

                    placedist.putExtras(bundle);
                    startActivity(placedist);
                }
            }

            private boolean validateInputInformation(
                    Map<String, String> validate) {

                String l_place = validate.get("placename");
                if (l_place == null || l_place.equals("")) {
                    place.setError("Please enter the Place First");
                    return false;
                }

                String l_distance = validate.get("distancenumeric");
                if (l_distance == null || l_distance.equals("")) {
                    distance.setError("Please enter the Distance First");
                    return false;
                }
                if (!isDoubleNumber(l_distance)) {
                    distance.setError("Please enter Numeric Value");
                    return false;
                }

                return true;

            }
            private boolean isDoubleNumber (String num) {
                try {
                    Double.parseDouble(num);
                } catch (NumberFormatException nfe) {
                    return false;
                }
                return true;
            }
        });
    }
}

実装後、すべて正常に動作していますが、検索ボタンを入力してクリックしないと、最初の編集ボックスにエラーが表示されます。その後、必要に応じて正しい値を再入力すると、エラー通知は消えませんが、検索ボタンが表示されます。うまく機能します。

set-error通知を最初の編集ボックスから削除できるように、私を助けてください。

4

3 に答える 3

5

の代わりにコード行の下に書くif ((_place == "" && _distance == ""))と、問題が解決します。

if (_place.equals("") && _distance.equals(""))
于 2012-11-23T10:13:17.713 に答える
4

同じ問題に直面しているため、あなたの投稿につまずきました。「フィールドを空のままにすると、setErrorが表示されますが、入力を開始すると、アイコンとテキストが削除されません。」

この動作は奇妙で、Androidのバグであると確信しています。フィールドのinputTypeを「textAddressEmail」または「textPassword」に設定すると機能しますが、入力が「text」、「textCapWords」の場合は機能しません。 、"textPersonName"..。

解決策は、プログラムでinputTypeを設定することです

EditText registrationName = (EditText)findViewById(R.id.registrationName);

registrationName.setInputType(InputType.TYPE_TEXT_FLAG_CAP_WORDS | InputType.TYPE_TEXT_VARIATION_PERSON_NAME);
于 2013-02-28T09:17:59.007 に答える
0

私もこの問題に直面してきました。このエラーを取り除くには、次のように呼び出します。 myEditText.Error = null;

お役に立てれば !

ハッピーコーディング!

于 2016-10-07T14:22:43.533 に答える