如果编辑文本中没有值,我无法通过单击按钮进行验证

时间:2017-01-16 00:04:34

标签: android-studio

我有一个按钮和一个只在我的主xml中输入类型编号的EditText。我想检查输入的所有值。我到目前为止所做的工作正常,我可以检查是否从零开始,然后敬酒注意消息,如果值为零也是一个toast msg,如果输入的值大于25,这完全适用于我的onClick程序来自xml中的按钮。

我无法解决的问题是当您删除编辑文本中的所有数字并且为空时。我尝试了很多代码,并且我的应用程序一直崩溃。

我的代码来自xml的编辑文本:

<EditText
                android:id="@+id/numarJocuri"
                android:background="@drawable/decor_fundal_la_edittext"
                android:paddingTop="6dp"
                android:paddingLeft="32dp"
                android:paddingRight="32dp"
                android:paddingBottom="6dp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:inputType="number"
                android:maxLength="2"
                android:textColor="#be9e51"
                android:textColorHint="#c8e6c9"
                android:textSize="14sp"
                android:text="1"/>

我的代码来自xml的按钮:

<Button
                android:layout_width="match_parent"
                android:layout_height="38dp"
                android:background="@drawable/buton_incepeti"
                android:drawableLeft="@drawable/ok1"
                android:gravity="center"
                android:layout_marginBottom="4dp"
                android:onClick="beginClick"
                android:paddingLeft="30dip"
                android:paddingRight="26dip"
                android:text="@string/incepeti"
                android:textColor="#ffffff" />

我在java主代码上点按了按钮的步骤:

//BEGIN CLICK
public void beginClick(View view) {

    //initialize the edit text
    final EditText edMeu = (EditText) findViewById(R.id.numarJocuri);

    String s1;

    s1 = edMeu.getText().toString().trim();

    int numar1;

    numar1 = Integer.parseInt(s1);

    //the value entered to not be bigger then 25
    if (numar1 > 25) {
        Toast.makeText(getApplicationContext(), getString(R.string.atentie_numar_maxim), Toast.LENGTH_SHORT).show();
        return;
    }

    //to not start with zero
    if (edMeu.getText().toString().startsWith("0")) {

        Toast.makeText(getApplicationContext(), getString(R.string.nu_incepe_cu_zero), Toast.LENGTH_SHORT).show();
        return;
    }


}//SFARSIT BEGIN CLICK

所以,直到现在所有这一切都有效。

我试过这个,但是按钮点击不能在这里工作。在alertdialog的其他活动中,此代码可以正常工作。

//check to not be empty
            String verif_text1 = edMeu.getText().toString().trim();

            if(verif_text1.isEmpty() || verif_text1.length() == 0 || verif_text1.equals("") || verif_text1 == null)
            {
                Toast.makeText(getApplicationContext(), getString(R.string.msg_null_values), Toast.LENGTH_LONG).show();
                return;
            } //end checking

此外,我试图检查该编辑文本的长度,但没有奏效。

2 个答案:

答案 0 :(得分:1)

您可以尝试使用isEmpty()来检查文本是否为空

edMeu.getText().toString().isEmpty()

答案 1 :(得分:0)

最后我解决了。这是如何:

主要问题是我在将其值转换为整数之后尝试检查编辑文本,所以在我更仔细地检查android控制台上显示的错误之后,我知道问题出在哪里。

代码进入我的java按钮

//begin click for the button
public void beginClick(View view) {

    //initialize 
    final EditText edMeu = (EditText) findViewById(R.id.numarJocuri);

    String s1;

    s1 = edMeu.getText().toString().trim();

    //here is the verification for not to be empty or no value entered
    if (s1.toString().isEmpty()) {
        Toast.makeText(getApplicationContext(), getString(R.string.games_not_entered), Toast.LENGTH_SHORT).show();
        return;
    }

//transform into integer values
//after the string was checked above

    int numar1;

    numar1 = Integer.parseInt(s1);

    //to not be bigger then 25, after is transformed in integer
    if (numar1 > 25) {
        Toast.makeText(getApplicationContext(), getString(R.string.atentie_numar_maxim), Toast.LENGTH_SHORT).show();
        return;
    }

    //to not start with zero values
    if (edMeu.getText().toString().startsWith("0")) {

        Toast.makeText(getApplicationContext(), getString(R.string.nu_incepe_cu_zero), Toast.LENGTH_SHORT).show();
        return;
    }
} //end of begin click for the button

这就是全部,并不难,但在编写代码时需要更多关注。