Как помещать, если пустой EditText вышел у меня ошибка?

Я делаю очень простое приложение, где я помещаю 3 editText, с целыми положительными числами, и я делаю вычисление. Если я наполняю эти 3 editText и острие в "считении" идет совсем совершенно, но если я оставляю 1, 2, или 3 пустота отпускает мне ошибку и мое приложение прекращает функционировать.

Как я делаю для того, чтобы, оставив это пустым, он интерпретировал это "0"? Я протестировал уже очень много вещей и ничто... всегда не выходит у меня ошибка и у меня вытекает из приложения... мой код этот:

protected void onCreate (Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_espaciales);

        et1 = (EditText) findViewById(R.id.suma1);
        et2 = (EditText) findViewById(R.id.suma2);
        et3 = (EditText) findViewById(R.id.suma3);
        Button sumarsumar = (Button) findViewById(R.id.sumarsumar);
        elresultado = (TextView) findViewById(R.id.resultado);
      //  textMessage = (EditText)findViewById(R.id.textMessage);

        //textMessage.addTextChangedListener(watcher);
        if (et1.getText().toString().trim().equalsIgnoreCase(""))
            et1.setError("This field can not be blank");

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

        if (et3.getText().toString().trim().equalsIgnoreCase(""))
            et3.setError("This field can not be blank");
            //c=0;
        sumarsumar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {


        double a = Double.valueOf(et1.getText().toString()); // Le saco valor entero y lo pongo en a
        double b = Double.valueOf(et2.getText().toString()); // Le saco valor entero y lo pongo en b
        double c = Double.valueOf(et3.getText().toString());


        double notafinal = a*0.35 + b*0.45+c*0.2; // RESULTADO FINAL

Поскольку вы можете наблюдать, я поместил if(et1.getText().toString()..... ) для того, чтобы пользователь видел в каждый edtiText один Warning поскольку которые должны завершать это, если бы не, у них вышла ошибка, но это отчаянное средство, это я это не хочу, хочу, чтобы они это смогли оставлять пустоту


<LinearLayout
    android:id="@+id/linearLayout2"
    android:layout_width="match_parent"
    android:layout_height="49dp"
    android:layout_marginTop="70dp"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:layout_marginLeft="20dp"
        android:text=" 2º" />

</LinearLayout>

<LinearLayout
    android:id="@+id/linearLayout1"
    android:layout_width="match_parent"
    android:layout_height="49dp"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="right|center_vertical|center_horizontal|center"
        android:layout_marginLeft="20dp"
        android:layout_weight="1"
        android:text=" 1º" />

</LinearLayout>

<LinearLayout
    android:id="@+id/linearLayout3"
    android:layout_width="match_parent"
    android:layout_height="49dp"
    android:layout_marginTop="140dp"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|center"
        android:text="    PRÁCTICAS" />

</LinearLayout>

<EditText
    android:id="@+id/suma2"
    android:layout_width="175dp"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/linearLayout2"
    android:layout_alignRight="@+id/linearLayout2"
    android:ems="10"
    android:gravity="center_vertical|center"
    android:inputType="numberDecimal" />

<EditText
    android:id="@+id/suma3"
    android:layout_width="169dp"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/linearLayout3"
    android:layout_alignRight="@+id/linearLayout3"
    android:ems="10"
    android:gravity="center_vertical|center"
    android:inputType="numberDecimal" />

<EditText
    android:id="@+id/suma1"
    android:layout_width="166dp"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/linearLayout1"
    android:layout_alignParentRight="true"
    android:ems="10"
    android:gravity="center_vertical|center"
    android:inputType="numberDecimal" />

<Button
    android:id="@+id/sumarsumar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/suma3"
    android:layout_below="@+id/linearLayout3"
    android:layout_marginTop="55dp"
    android:text="Button" />

<TextView
    android:id="@+id/resultado"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/suma1"
    android:layout_below="@+id/sumarsumar"
    android:layout_marginTop="58dp"
    android:text="TextView" />

3
задан 27.07.2019, 17:06
5 ответов

Использует ее funciГіn isEmpty(), которые возвращают тебя, если стоимость EditText - vacГ - или:

 if(!numpad.getText().toString().isEmpty()){ 

       //Devuelve alguna cadena de texto

 }else{

       //Devuelve vacío

 }
4
ответ дан 03.12.2019, 21:00

Очень легкий, я надеюсь, что ты понимаешь меня.

Я сделал похожие приложения и то, что я всегда делаю, когда я делаю Touch в кнопке мне сделал процесс преобразования.

Сначала ты заявляешь 3 помощника, которые преобразовывали бы все то, что ты писал бы цепи.

Override
public void onClick(View view) {

String auxi=et1.getText().toString();
String auxi2=et2.getText().toString();
String auxi3=et3.getText().toString();

}

После ты добавляешь условие, что если один из 3 EditText стоимости, которую он берет, 0.

Override
public void onClick(View view) {

    String auxi=et1.getText().toString();
    String auxi2=et2.getText().toString();
    String auxi3=et3.getText().toString();

    if(auxi.matches("") //Solo es una acción así que no es necesario las llaves
         double a = 0;  //Si no hay nada le agregamos 0
    else
         double a = Integer.parseInt(auxi1); //De lo contrario lo transformamos.

    //lo mismo con los otros 2.
    if(auxi2.matches("")
         double b= 0; 
    else
         double b = Integer.parseInt(auxi2);


    if(auxi3.matches("")
         double c= 0; 
    else
         double c = Integer.parseInt(auxi3);  

    //Por ultimo la operación. 
    double notafinal = a*0.35 + b*0.45+c*0.2; // RESULTADO FINAL
    ....   
}

Уже с там ты это заканчиваешь алгоритм, мой не лучший из мира, но уже для больше "EditText" я использую другие алгоритмы, чтобы улучшать результат.

0
ответ дан 03.12.2019, 21:00

Так как ты только должен санкционировать что этот пустой txt, и если он состоит итак в том, чтобы он это наполнил с string "0"

Double _default = "0.0";

if(et1.getText().toString().isEmpty()){

et1.setText(Double.Parse(_default)); 
}

С этим ты наполняешь et1 с 0.0 в случае, если он будет пустым.

-1
ответ дан 03.12.2019, 21:00

Проверка, если EditText пустые, ты это делаешь в заявлении с, что сначала будет всегда пустым, ты должен контролировать EditText в моменте, в котором пользователь нажимает кнопку:

sumarsumar.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

   double a = 0;
   //Comprobamos que no estén vacios
   if (et1.getText().toString().trim().length() > 0) {
       a = Double.valueOf(et1.getText().toString()); 
   } else {
      //¿Quieres hacer algo si el usuario no ha añadido nada?
   }

   ...

Таким образом, если пользователь ничего не напишет в назначенном по умолчанию EditText, будет стоимость у 0.


Я вижу, что ты делал сравнение с:
if (et1.getText().toString().trim().equalsIgnoreCase(""))

Ты используешь equalsIgnoreCase, этот метод служит для того, чтобы сравнить две цепи текста опуская, что были прописными или мелкими, например:

if("texto".equalsIgnoreCase("TEXTO")) Он дал бы как результат TRUE

if("texto".equals("TEXTO")) Он дал бы как результат FALSE

0
ответ дан 03.12.2019, 21:00
  • 1
    в конце концов уже я этого добился, большое спасибо:) – Rf Mvs 04.08.2016, 14:52

Если ты только хочешь санкционировать, если он существует или не контент может иметь несколько форм, например:

Чтобы санкционировать, если он не содержит никакого символа:

if(editText.getText().toString().length() == 0 )
    //EditText Vacio!

Чтобы санкционировать, если он содержит какой-то символ:

if(editText.getText().toString().length() > 0 )
    //EditText contiene algún caracter!

Это была бы версия, которая удаляет место в мишени используя метод trim() :

if(et1.getText().toString().trim().length() == 0)
   //EditText Vacio!

Но я верю в то, что лучший выбор, чтобы санкционировать, если эта опустошила или нет контент EditText он был бы посредством метода isEmpty ():

if(editText.getText().toString().isEmpty())
   //EditText contiene algún caracter!
2
ответ дан 03.12.2019, 21:00