如果用户在edittext中输入空白值,我想显示错误。但是我不知道怎么能这样做。这就是我想要的样子:
这是我创建的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("gauravthethinker@gmail.com");
setTittle();
continuebooking.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
if(firstName.getText().toString().trim().equalsIgnoreCase("")){
firstName.setError("Enter FirstName");
}
}
});
}
所以,如果用户没有输入他的名字,我想要显示一个错误,就像你没有输入任何名字那样的图像。请帮助我,我是android.Thanks的新手
答案 0 :(得分:91)
您可以将错误显示为EditText
if (editText.getText().toString().trim().equalsIgnoreCase("")) {
editText.setError("This field can not be blank");
}
,看起来如下所示
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);
}
}
});
答案 1 :(得分:22)
private void showError() {
mEditText.setError("Password and username didn't match");
}
这将导致如下所示的错误:
如果你想删除它:
textView.setError(null);
答案 2 :(得分:3)
我得到了我的问题的解决方案希望这也会帮助其他人。我使用onTextChnaged它调用当一个类型的对象附加到Editable时,它的方法将在文本被更改时被调用。
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("test@gmail.com");
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 :(得分:2)
if(TextUtils.isEmpty(firstName.getText().toString()){
firstName.setError("TEXT ERROR HERE");
}
或者你也可以使用TextInputLayout,它有一些有用的方法和一些用户友好的动画
答案 4 :(得分:1)
我知道为时已晚,但是如果有人仍然需要帮助。这是有效的解决方案。
设置error
非常简单。但是,当用户请求Focus
时,它将显示给用户。因此,要自行完成这两项操作,请使用code
。
firstName.setError("Enter FirstName");
firstName.requestFocus();
答案 5 :(得分:0)
使用youredittext.equals("")
,您可以知道用户是否未输入任何字母。
答案 6 :(得分:0)
使用科特林语言,
示例代码
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"
}
}
答案 7 :(得分:0)
按照此方法实现此操作的简单方法
第一个缩写为EditText字段
EditText editText = findViewById(R.id.editTextField);
完成初始化后。现在该将估算值保留在变量中了
final String userInput = editText.getText().toString();
现在是时候检查用户是否满足条件了
if (userInput.isEmpty()){
editText.setError("This field need to fill up");
}else{
//Do what you want to do
}
这是我如何处理项目的示例
private void sendMail() {
final String userMessage = etMessage.getText().toString();
if (userMessage.isEmpty()) {
etMessage.setError("Write to us");
}else{
Toast.makeText(this, "You write to us"+etMessage, Toast.LENGTH_SHORT).show();
}
}
希望它会对您有所帮助。
快乐编码
答案 8 :(得分:0)
u可以使用:
@Override
public void afterTextChanged(Editable s) {
super.afterTextChanged(s);
if (s.length() == Bank.PAN_MINIMUM_RECOGNIZABLE_LENGTH + 10) {
Bank bank = BankUtil.findByPan(s.toString());
if (null != bank && mNewPanEntered && !mNameDefined) {
mNewPanEntered = false;
suggestCardName(bank);
}
private void suggestCardName(Bank bank) {
mLastSuggestTime = System.currentTimeMillis();
if (!bank.getName().trim().matches(getActivity().getString(R.string.bank_eghtesadnovin))) {
inputCardNumber.setError(R.string.balance_not_enmb, true);
}
}
答案 9 :(得分:-1)
您可以使用onchange事件来触发验证,然后如果这对您来说足够了就可以显示吐司
答案 10 :(得分:-1)
您已在onClick
事件中编写了代码。点击EditText
时会调用此方法。但这就像你在进入之前检查它一样。
那么我的建议是,你应该使用focus changed
。当任何视图获得焦点时,您正在设置no error
,当焦点发生变化时,您会检查是否存在有效输入,如下所示。
firstName.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View arg0, boolean arg1) {
firstName.setError(null);
if (firstName.getText().toString().trim().equalsIgnoreCase("")) {
firstName.setError("Enter FirstName");
}
}
});
答案 11 :(得分:-1)
似乎你无法得到的是在editText结尾处显示错误。设置editText宽度以匹配父布局包络的宽度。会工作得很好。