web-dev-qa-db-ja.com

テキストの編集のヒントにエラーを表示Android

ユーザーが編集テキストに空白の値を入力した場合にエラーを表示したいのですが、どうすればこれを行うことができません。これは私がこのようにしたい方法です:

enter image description here

これは私が作成した私のXMLです

<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:orientation="horizontal" >

    <LinearLayout
        Android:id="@+id/headerLayout"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:layout_alignParentTop="true"
        Android:background="@drawable/top_bg"
        Android:orientation="horizontal" >

        <ImageView
            Android:id="@+id/back_button"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:layout_marginLeft="10dp"
            Android:layout_marginTop="5dp"
            Android:src="@drawable/back_button" />

        <TextView
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:layout_marginLeft="75dp"
            Android:layout_marginTop="10dp"
            Android:text="Traveller Details"
            Android:textColor="@Android:color/white" />
    </LinearLayout>
    <LinearLayout 
        Android:id="@+id/tittleLayout"
        Android:layout_below="@+id/headerLayout"
        Android:layout_height="wrap_content"
        Android:layout_width="fill_parent"
        Android:orientation="vertical" >

        <TextView
            Android:id="@+id/TittleTravellerDetails"
            Android:layout_width="wrap_content"
            Android:layout_height="match_parent"
            Android:layout_marginLeft="10dp"
            Android:layout_marginTop="5dp"
            Android:gravity="left"
            Android:text="Traveller Details" />

        <View
            Android:layout_width="wrap_content"
            Android:layout_height="2dip"
            Android:layout_marginTop="2dp"
            Android:background="#FF909090" />

    </LinearLayout>

    <LinearLayout
        Android:id="@+id/passengerDetails"
        Android:layout_below="@+id/tittleLayout"
        Android:layout_height="wrap_content"
        Android:layout_width="fill_parent"
        Android:orientation="vertical">

        <Spinner
            Android:id="@+id/Tittle"
            Android:layout_width="290dp"
            Android:layout_marginLeft="5dp"
            Android:layout_marginTop="5dp"
            Android:layout_height="wrap_content"/>
        <EditText
            Android:id="@+id/firstName"
            Android:layout_width="290dp"
            Android:layout_height="wrap_content"
            Android:layout_marginLeft="5dp"
            Android:layout_marginTop="5dp"
            Android:hint="First Name" />

        <EditText
            Android:id="@+id/LastName"
            Android:layout_width="290dp"
            Android:layout_height="wrap_content"
            Android:layout_marginLeft="5dp"
            Android:layout_marginTop="5dp"
            Android:hint="Last Name" />

    </LinearLayout>
    <LinearLayout 
        Android:id="@+id/ContactDetailsLayout"
        Android:layout_below="@+id/passengerDetails"
        Android:layout_height="wrap_content"
        Android:layout_width="fill_parent"
        Android:layout_marginTop="10dp"
        Android:orientation="vertical" >

        <TextView
            Android:id="@+id/TittleContactDetails"
            Android:layout_width="wrap_content"
            Android:layout_height="match_parent"
            Android:layout_marginLeft="10dp"
            Android:layout_marginTop="5dp"
            Android:gravity="left"
            Android:text="ContactDetails" />

        <View
            Android:layout_width="wrap_content"
            Android:layout_height="2dip"
            Android:layout_marginTop="2dp"
            Android:background="#FF909090" />

    </LinearLayout>

    <LinearLayout
        Android:id="@+id/mobileEmailDetails"
        Android:layout_below="@+id/ContactDetailsLayout"
        Android:layout_height="wrap_content"
        Android:layout_width="fill_parent"
        Android:orientation="vertical">

        <EditText
            Android:id="@+id/mobileNumber"
            Android:layout_width="290dp"
            Android:layout_height="wrap_content"
            Android:layout_marginLeft="5dp"
            Android:layout_marginTop="5dp"
            Android:inputType="number"
            Android:hint="Mobile No" />

        <TextView
            Android:id="@+id/emailid"
            Android:layout_width="284dp"
            Android:layout_height="wrap_content"
            Android:layout_marginLeft="8dp"
            Android:layout_marginTop="5dp"
            Android:hint="Email ID" />

    </LinearLayout>
    <LinearLayout 
        Android:id="@+id/continueBooking"
        Android:layout_below="@+id/mobileEmailDetails"
        Android:layout_height="wrap_content"
        Android:layout_width="fill_parent"
        Android:orientation="vertical">

        <ImageView
            Android:id="@+id/continuebooking"
            Android:layout_width="wrap_content"
            Android:layout_height="match_parent"
            Android:layout_marginLeft="20dp"
            Android:layout_marginTop="25dp"

            Android:src="@drawable/continue" />

    </LinearLayout>

 </RelativeLayout>

アクティビティコード

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);
        emailId = (TextView)findViewById(R.id.emailid);
        continuebooking = (ImageView)findViewById(R.id.continuebooking);
        firstName= (EditText)findViewById(R.id.firstName);
        emailId.setText("[email protected]");
        setTittle();
        continuebooking.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {

                if(firstName.getText().toString().trim().equalsIgnoreCase("")){
                    firstName.setError("Enter FirstName");
                }

            }
        });
    }

だから、ユーザーが彼の名前を入力しない場合、私はあなたがそのような名前を入力していないという画像のようなエラーを表示したいです。

32
Developer

EditTextのPopUpとしてエラーを表示できます

if (editText.getText().toString().trim().equalsIgnoreCase("")) {
      editText.setError("This field can not be blank");
}

それは次のようになります

enter image description here

firstName.addTextChangedListener(new TextWatcher()  {

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    }

    @Override
    public void afterTextChanged(Editable s)  {
        if (firstName.getText().toString().length <= 0) {
            firstName.setError("Enter FirstName");
        } else {
            firstName.setError(null);
        }
    }
 });
96
SilentKiller
private void showError() {
   mEditText.setError("Password and username didn't match");
}

次のようなエラーが発生します:

enter image description here

そして、それを削除したい場合:

 textView.setError(null);
22
Waza_Be

私は自分の問題の解決策を得ましたこれが他の人にも役立つことを願っています。

public class MainActivity extends Activity {
    TextView emailId;
    ImageView continuebooking;
    EditText firstName;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);
        emailId = (TextView)findViewById(R.id.emailid);
        continuebooking = (ImageView)findViewById(R.id.continuebooking);
        firstName= (EditText)findViewById(R.id.firstName);
        emailId.setText("[email protected]");
        setTittle();
        continuebooking.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {

                if(firstName.getText().toString().trim().equalsIgnoreCase("")){
                    firstName.setError("Enter FirstName");
                }

            }
        });
        firstName.addTextChangedListener(new TextWatcher() {

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                firstName.setError(null);

            }

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count,
                    int after) {
                // TODO Auto-generated method stub

            }

            @Override
            public void afterTextChanged(Editable s) {
                firstName.setError(null);

            }
        });
    }
3
Developer
if(TextUtils.isEmpty(firstName.getText().toString()){
      firstName.setError("TEXT ERROR HERE");
}

または、いくつかの便利なメソッドとユーザーフレンドリーなアニメーションを備えたTextInputLayoutを使用することもできます。

3

遅すぎますが、誰か助けが必要な場合に備えて。これが実用的なソリューションです。 errorの設定は非常に簡単です。ただし、ユーザーがFocusを要求すると、ユーザーに表示されます。両方を自分で行うには、このcodeを使用します。

 firstName.setError("Enter FirstName");
 firstName.requestFocus();
3
Nouman Ghaffar

youredittext.equals("")を使用すると、ユーザーが文字を入力していないかどうかを知ることができます。

0
Lyd

Kotlin言語を使用して、

サンプルコード

 login_ID.setOnClickListener {
            if(email_address_Id.text.isEmpty()){
                email_address_Id.error = "Please Enter Email Address"
            }
            if(Password_ID.text.isEmpty()){
                Password_ID.error = "Please Enter Password"
            }
        }
0
BloodLoss