android中的必填字段

时间:2017-05-15 13:07:26

标签: android

您好我正在制作一个用户可以订购一些书籍的应用程序。当他或她用他的第一个名字等填写订单并点击订单按钮应用程序时,使用Intent将切换到SMS,因此将通过短信购买书籍。但我希望能够,如果用户意外忘记填写所有字段,吐司弹出消息“请填写XYZ字段”。我使用了if else,但是当一些字段保持空白时发生了其他事情。我得到了android消息,我的应用程序需要关闭并返回到之前的活动。在我的LogCat中没有发生任何事情。没有错误消息。

这是我的代码:

public void kreiranjeNarudzbine(View v) {
    EditText editTextIme = (EditText) findViewById(R.id.ime);
    String imeNarucioca = editTextIme.getText().toString();
    EditText editTextPrezime = (EditText)findViewById(R.id.prezime);
    String prezimeNarucioca = editTextPrezime.getText().toString();
    EditText editTelefonNarucioca = (EditText)findViewById(R.id.telefon);
    String telefonNarucioca = editTelefonNarucioca.getText().toString();
    EditText editAdresaNarucioca = (EditText)findViewById(R.id.adresa);
    String adresaNarucioca = editAdresaNarucioca.getText().toString();
    EditText editGradNarucioca = (EditText)findViewById(R.id.grad);
    String gradNarucioca = editGradNarucioca.getText().toString();
    EditText editKolicina = (EditText)findViewById(R.id.kolicina);
    String narucenaKolicina = editKolicina.getText().toString();
    int kolicina = Integer.parseInt(narucenaKolicina);
    int cenaNarudzbine = cena(kolicina);
    String poruka = sumiranjeNarudzbine(imeNarucioca, prezimeNarucioca,telefonNarucioca,adresaNarucioca,gradNarucioca,cenaNarudzbine);
    Intent smsIntent = new Intent(Intent.ACTION_VIEW);
    smsIntent.setType("vnd.android-dir/mms-sms");
    smsIntent.putExtra("address", "+381629647169");
    smsIntent.putExtra("sms_body",poruka);
    if(imeNarucioca.equals("")){
        Toast.makeText(Narudzbina.this, "Unesite ime", Toast.LENGTH_LONG).show();
    }
    else if(prezimeNarucioca.equals("")){
        Toast.makeText(Narudzbina.this,"Unesite Prezime", Toast.LENGTH_LONG).show();

    }
    else if(telefonNarucioca.equals("")){
        Toast.makeText(Narudzbina.this,"Unesite kontakt telefon", Toast.LENGTH_LONG).show();
    }
    else if(adresaNarucioca.equals("")){
        Toast.makeText(Narudzbina.this,"Unesite adresu",Toast.LENGTH_LONG).show();
    }
    else if(gradNarucioca.equals("")){
        Toast.makeText(Narudzbina.this, "Navedite grad", Toast.LENGTH_LONG).show();
    }
    else if(narucenaKolicina.equals("")){
        Toast.makeText(Narudzbina.this, "Navedite zeljenu kolicinu", Toast.LENGTH_LONG).show();
    }
    else{

        startActivity(smsIntent);}

}

5 个答案:

答案 0 :(得分:1)

如前所述,您检查以确保它不为null或为空。

if(imeNarucioca!=null && imeNarucioca.equals("")){
    Toast.makeText(Narudzbina.this, "Unesite ime", Toast.LENGTH_LONG).show();
}
else if(prezimeNarucioca!=null && prezimeNarucioca.equals("")){
    Toast.makeText(Narudzbina.this,"Unesite Prezime", Toast.LENGTH_LONG).show();

}
else if(telefonNarucioca!=null && telefonNarucioca.equals("")){
    Toast.makeText(Narudzbina.this,"Unesite kontakt telefon", Toast.LENGTH_LONG).show();
}
else if(adresaNarucioca!=null && adresaNarucioca.equals("")){
    Toast.makeText(Narudzbina.this,"Unesite adresu",Toast.LENGTH_LONG).show();
}
else if(gradNarucioca!=null && gradNarucioca.equals("")){
    Toast.makeText(Narudzbina.this, "Navedite grad", Toast.LENGTH_LONG).show();
}
else if(narucenaKolicina!=null && narucenaKolicina.equals("")){
    Toast.makeText(Narudzbina.this, "Navedite zeljenu kolicinu", Toast.LENGTH_LONG).show();
}
else{
    startActivity(smsIntent);
}

这可以转换成一种方法来防止尽可能多的文本:

public boolean isETEmpty(EditText et){
    return (et != null && (et.equals("") || et.equals(" ")));//the final piece checks if the edittext is empty or just contains a space. It is or between
    //in order to ensure that one of those are true. Thus the parenthesis 
}

how the above works

现在,对于必填字段,您可以使用HTML格式化文本:

/*your view*/.setText(Html.fromHtml("Your title. <font color='red'>*</font>"));

上述代码通过在必填字段后添加红色星形来格式化代码。稍后你可以这样做:

/*your view*/.setText(Html.fromHtml("<font color='red'>*</font> Required field"));

您使用textview引用,edittext或用于设置文本的任何内容替换的注释/*your view*/

进一步阅读:

https://stackoverflow.com/a/9161958/6296561

答案 1 :(得分:0)

空edittext的字符串可能为null,这会导致问题。请尝试以下代码。

if(imeNarucioca==null || imeNarucioca.equals("")){
        Toast.makeText(Narudzbina.this, "Unesite ime", Toast.LENGTH_LONG).show();
    }
    else if(prezimeNarucioca==null || prezimeNarucioca.equals("")){
        Toast.makeText(Narudzbina.this,"Unesite Prezime", Toast.LENGTH_LONG).show();

    }
    else if(telefonNarucioca==null || telefonNarucioca.equals("")){
        Toast.makeText(Narudzbina.this,"Unesite kontakt telefon", Toast.LENGTH_LONG).show();
    }
    else if(adresaNarucioca==null || adresaNarucioca.equals("")){
        Toast.makeText(Narudzbina.this,"Unesite adresu",Toast.LENGTH_LONG).show();
    }
    else if(gradNarucioca==null || gradNarucioca.equals("")){
        Toast.makeText(Narudzbina.this, "Navedite grad", Toast.LENGTH_LONG).show();
    }
    else if(narucenaKolicina==null || narucenaKolicina.equals("")){
        Toast.makeText(Narudzbina.this, "Navedite zeljenu kolicinu", Toast.LENGTH_LONG).show();
    }
    else{
        startActivity(smsIntent);}
   }

答案 2 :(得分:0)

您应该使用isEmpty中提供的android.text.TextUtils方法。该方法的整体描述和实现:

/**
 * Returns true if the string is null or 0-length.
 * @param str the string to be examined
 * @return true if str is null or zero length
 */
public static boolean isEmpty(@Nullable CharSequence str) {
    if (str == null || str.length() == 0)
        return true;
    else
        return false;
}

因此,要验证nullempty用户输入,您可以执行以下操作:

if(android.text.TextUtils.isEmpty(imeNarucioca)){
    // ...
}

答案 3 :(得分:0)

所以我使用它,你可以用它做你喜欢的事情:

这是方法:

public static boolean checkEditTextIsEmpty(EditText... editTexts)
{
    try
    {
        for (EditText editText : editTexts)
        {
            if (editText.getText().toString().trim().length() == 0)
            {
                Drawable d = _application.currentActivity.getResources().getDrawable(android.R.drawable.ic_dialog_alert);
                d.setBounds(0, 0, d.getIntrinsicWidth()/2, d.getIntrinsicHeight()/2);
                editText.requestFocus();
                editText.setError(editText.getHint() + " is empty", d);
                return false;
            }
        }
    }
    catch (Exception ignored)
    {
        return false;
    }
    return true;
}

这是预览:(忽略我的风格和背景) enter image description here

这是我实施它的方式:

if(checkEditTextIsEmpty(txtEmail, txtPassword))
{
    //Do whatever if EditTexts is not empty
}

答案 4 :(得分:0)

只需在您的Java文件中以编程方式添加此行,  在“文本”视图附近添加必填字段。

List<Item>

添加必填字段,而不是 yourText 字段,  然后使用colors.xml中所需的颜色