Создать диалог, когда есть пустое поле - PullRequest
0 голосов
/ 23 октября 2018

Я боролся с этой проблемой, которая продолжает сбой моего приложения каждый раз, когда в нем есть пустое поле.

, когда я запускаю код, он говорит мне, что в строках есть ошибка32 и 37, прямо там, где я преобразую строку из textView в целые числа, чтобы выполнить операции с этими числами

Error Image

Было бы здорово, если бы выребята могли это проверить.

package com.studium.second.secondtest;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {

    Activity miActividad;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        miActividad = this;


        Button calcular = findViewById(R.id.button1);

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

                TextView textoBase = findViewById(R.id.areaBase);
                String base = textoBase.getText().toString();
                int numeroBase = Integer.parseInt(base);


                TextView textoAltura = findViewById(R.id.areaAltura);
                String altura = textoAltura.getText().toString();
                int numeroAltura = Integer.parseInt(altura);

                //Operación
                final TextView cajaResultado = findViewById(R.id.areaResultado);

                final int operacion = numeroAltura * numeroBase;
                cajaResultado.setText(getResources().getString(R.string.textoResultado ) + " " + operacion);

                if (base == null && altura != null){
                    AlertDialog.Builder builder = new AlertDialog.Builder(miActividad.getApplicationContext());
                    builder.setMessage("El parámetro base está vacío")
                            .setCancelable(false)
                            .setNegativeButton("Volver", new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog, int id) {
                                    dialog.cancel();
                                }
                            });
                    AlertDialog alert = builder.create();
                    alert.show();
                }

                if (base != null && altura == null){
                    AlertDialog.Builder builder = new AlertDialog.Builder(miActividad.getApplicationContext());
                    builder.setMessage("El parámetro altura está vacío")
                            .setCancelable(false)
                            .setNegativeButton("Volver", new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog, int id) {
                                    dialog.cancel();
                                }
                            });
                    AlertDialog alert = builder.create();
                    alert.show();
                }


                if (base == null && altura == null){
                    AlertDialog.Builder builder = new AlertDialog.Builder(miActividad.getApplicationContext());
                    builder.setMessage("Todos los parámetros están vacíos")
                            .setCancelable(false)
                            .setNegativeButton("Volver", new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog, int id) {
                                    dialog.cancel();
                                }
                            });
                    AlertDialog alert = builder.create();
                    alert.show();
                }
            }
        });
    }
}

Ответы [ 4 ]

0 голосов
/ 23 октября 2018

Попробуйте это

AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
0 голосов
/ 23 октября 2018

Решение:

Перед этой строкой int numeroBase = Integer.parseInt(base); Напишите это:

if (base.contentEquals("")) {
    Toast.makeText(MainActivity.this, "Please enter a value in Base", Toast.LENGTH_SHORT).show;
else {
    int numeroBase = Integer.parseInt(base);
    ....
}

и сделайте то же самое для этой строки: int numeroAltura = Integer.parseInt(altura);

Вот и все.

0 голосов
/ 23 октября 2018

Напишите нулевую проверку для строки, которую вы получаете в качестве ввода, и после этого выполните синтаксический анализ.

В вашем случае сделайте это следующим образом:

            TextView textoBase = findViewById(R.id.areaBase);
            String base = textoBase.getText().toString().trim();
            if(!TextUtils.isEmpty(base))
               int numeroBase = Integer.parseInt(base);
            else 
              // Show some message like "Field is Mandatory"

            TextView textoAltura = findViewById(R.id.areaAltura);
            String altura = textoAltura.getText().toString().trim();
            if(!TextUtils.isEmpty(base))
               int numeroAltura = Integer.parseInt(altura);
            else 
              // Show some message like "Field is Mandatory"
0 голосов
/ 23 октября 2018
String base = textoBase.getText().toString();
int numeroBase = Integer.parseInt(base);

String altura = textoAltura.getText().toString();
int numeroAltura = Integer.parseInt(altura);

Вы не можете выполнить .parseInt для пустой строки.Это, конечно, приведет к краху.Вы должны проверить пустую строку раньше.

...