英文:
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();
}
}
在上面的代码中,如果number1
或number2
为空,则我需要弹出一个警告框,显示"请输入两个值"。但是,每当我将任何一个(number1
或number2
)设置为空时,我会得到下面的错误。有谁能给我建议,让警告框出现而不是错误。
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 EditText
s:
In your layout/activity_main.xml:
<EditText
android:name="@+id/R.id.etNum1"
android:text="0"
(...)
/>
<EditText
android:name="@+id/R.id.etNum2"
android:text="0"
(...)
/>
专注分享java语言的经验与见解,让所有开发者获益!
评论