Как показать диалоговое окно оповещения в android - PullRequest
0 голосов
/ 04 мая 2020

Я создал приложение простого сложения. Вот код, приведенный ниже ..

package com.example.helloworld;

import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    private EditText num1;
    private EditText num2;
    private Button add;
    private TextView ans;


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

        num1=(EditText)findViewById(R.id.etNum1);
        num2=(EditText)findViewById(R.id.etNum2);
        add=(Button)findViewById(R.id.btn);
        ans=(TextView)findViewById(R.id.tvans);

        add.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try{
                    Integer number1 = Integer.parseInt(num1.getText().toString());
                    Integer number2 = Integer.parseInt(num2.getText().toString());
                        int sum = number1 + number2;
                        ans.setText("Answer is " + Integer.toString(sum));
                }
                catch (NumberFormatException e){
                    e.printStackTrace();
                }
                }

        });
    }
}

В приведенном выше коде, если число 1 или номер 2 пусто, я должен вызвать всплывающее окно с сообщением «Введите два значения ".. Но всякий раз, когда я даю любое (число 1 или число 2) как пустое, я получаю ошибку ниже. Может ли кто-нибудь предложить мне решение, чтобы вместо ошибки появлялось окно с предупреждением.

W/System.err: java.lang.NumberFormatException: For input string: ""
W/System.err:     at java.lang.Integer.parseInt(Integer.java:627)
        at java.lang.Integer.parseInt(Integer.java:650)
        at com.example.helloworld.MainActivity$1.onClick(MainActivity.java:33)
        at android.view.View.performClick(View.java:6614)
        at android.view.View.performClickInternal(View.java:6587)
        at android.view.View.access$3100(View.java:787)
        at android.view.View$PerformClick.run(View.java:26122)
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:201)
        at android.app.ActivityThread.main(ActivityThread.java:6831)
        at java.lang.reflect.Method.invoke(Native Method)
W/System.err:     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.ru`enter code here`n(RuntimeInit.java:547)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:927)

Ответы [ 3 ]

0 голосов
/ 04 мая 2020
     try {
            if (num1.getText().toString().isEmpty()) {

                Toast.makeText(requireActivity(), "Invalid number 1", Toast.LENGTH_SHORT).show();
                return;
            }
            Integer number1 = Integer.parseInt(num1.getText().toString());

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

                Toast.makeText(requireActivity(), "Invalid number 2", Toast.LENGTH_SHORT).show();
                return;
            }
            Integer number2 = Integer.parseInt(num2.getText().toString());
            int sum = number1 + number2;
            ans.setText("Answer is " + Integer.toString(sum));
        } catch (NumberFormatException e) {
            e.printStackTrace();
        }
0 голосов
/ 04 мая 2020

Вы можете установить значение по умолчанию 0 на EditText s:

В вашем макете / activity_main. xml:

<EditText 
    android:name="@+id/R.id.etNum1"
    android:text="0"
    (...)
    />

<EditText 
    android:name="@+id/R.id.etNum2"
    android:text="0"
    (...)
    />
0 голосов
/ 04 мая 2020

Проверка if (num1.getText()!="") до

Integer number1 = `Integer.parseInt(num1.getText().toString());`

И if (num2.getText()!="") до

Integer number2 = `Integer.parseInt(num2.getText().toString());`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...