如何在安卓中显示警告对话框

huangapple 未分类评论53阅读模式
英文:

How to show alert dialog in android

问题

我已创建一个简单的加法应用程序。以下是代码...

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("答案是 " + Integer.toString(sum));
                } catch (NumberFormatException e) {
                    e.printStackTrace();
                    showAlert("请输入两个值");
                }
            }
        });
    }

    private void showAlert(String message) {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("警告");
        builder.setMessage(message);
        builder.setPositiveButton("确定", null);
        builder.create().show();
    }
}

在上面的代码中,如果number1number2为空,则我需要弹出一个警告框,显示"请输入两个值"。但是,每当我将任何一个(number1number2)设置为空时,我会得到下面的错误。有谁能给我建议,让警告框出现而不是错误。

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.run(RuntimeInit.java:547)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:927)
英文:

I have created simple addition app.Here the code below..

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();
                }
                }

        });
    }
}

In the above code,if either number1 or number2 is empty then I have to pop up an alert box saying "Enter two values"..But whenever i give any (number1 or number2) as empty I'm getting below error.
Could anyone suggest me a solution so that alert box should come instead of error.

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)

答案1

得分: 0

在以下情况下检查 if (num1.getText()!= "")

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

以及在以下情况下检查 if (num2.getText()!= "")

Integer number2 = Integer.parseInt(num2.getText().toString());
英文:

Check if (num1.getText()!="") before

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

And if (num2.getText()!="") before

Integer number2 = `Integer.parseInt(num2.getText().toString());`

答案2

得分: 0

try {
    if (num1.getText().toString().isEmpty()) {
        Toast.makeText(requireActivity(), "无效的数字1", Toast.LENGTH_SHORT).show();
        return;
    }
    Integer number1 = Integer.parseInt(num1.getText().toString());

    if (num2.getText().toString().isEmpty()) {
        Toast.makeText(requireActivity(), "无效的数字2", Toast.LENGTH_SHORT).show();
        return;
    }
    Integer number2 = Integer.parseInt(num2.getText().toString());
    int sum = number1 + number2;
    ans.setText("答案是 " + Integer.toString(sum));
} catch (NumberFormatException e) {
    e.printStackTrace();
}
英文:
     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();
        }

答案3

得分: 0

你可以将 EditText 的默认值设置为 0

在你的布局文件 activity_main.xml 中:

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

You may set default value 0 to the EditTexts:

In your layout/activity_main.xml:

&lt;EditText 
    android:name=&quot;@+id/R.id.etNum1&quot;
    android:text=&quot;0&quot;
    (...)
    /&gt;

&lt;EditText 
    android:name=&quot;@+id/R.id.etNum2&quot;
    android:text=&quot;0&quot;
    (...)
    /&gt;

huangapple
  • 本文由 发表于 2020年5月4日 18:40:24
  • 转载请务必保留本文链接:https://java.coder-hub.com/61590298.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定