java - 警报对话框无法正常运行。

标签 java android button android-alertdialog

我正在处理的这段代码要求用户在文本框中输入电话号码后按下按钮。该按钮用于保存号码。

当我运行代码时,我希望它向用户显示一个警报对话框,要求他们在没有数字的情况下按下按钮时输入数字。

应用程序崩溃而不是收到警报对话框。但输入数字后,应用程序就可以正常工作。

对此的任何建议都会很棒 - 这是下面带有堆栈跟踪的代码。 -谢谢!

        b.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            //Create an if statement that brings up an alert dialog if there is no number entered into the field.
            switch (v.getId()) {
            case R.id.btnwidgetconfig: {
                if (sharedData == null)
                {
                    AlertDialog.Builder alert = new AlertDialog.Builder(c);
                    alert.setTitle("No number entered");
                    alert.setMessage("Please enter a phone number using the the text box");
                    alert.setCancelable(false);

                    alert.setPositiveButton("Okay", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            startActivityForResult(
                                    new Intent(
                                            android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS),
                                    0);
                        }
                    });


                }
                else
                {
                String stringData = sharedData.getText().toString();
                Long l = Long.parseLong(stringData);
                SharedPreferences.Editor editor = prefs.edit();
                prefs.edit().putLong(constants.KEY, l).commit();
                Toast.makeText(c, "Your number has been saved!",
                        Toast.LENGTH_LONG).show();
                svNum.setText("Saved Number: " + prefs.getLong(constants.KEY, 411));
                break;
                }
            }
            }
        }
    });

////堆栈跟踪:

05-14 12:29:07.679: W/dalvikvm(30842): threadid=1: thread exiting with uncaught      exception (group=0x40018560)
05-14 12:29:07.679: E/AndroidRuntime(30842): FATAL EXCEPTION: main
05-14 12:29:07.679: E/AndroidRuntime(30842): java.lang.NumberFormatException: 
05-14 12:29:07.679: E/AndroidRuntime(30842):    at   java.lang.Long.parseLong(Long.java:337)
05-14 12:29:07.679: E/AndroidRuntime(30842):    at java.lang.Long.parseLong(Long.java:311)
05-14 12:29:07.679: E/AndroidRuntime(30842):    at example.save.phonenum.Settings$1.onClick(WWSettings.java:106)
05-14 12:29:07.679: E/AndroidRuntime(30842):    at android.view.View.performClick(View.java:2485)
05-14 12:29:07.679: E/AndroidRuntime(30842):    at android.view.View$PerformClick.run(View.java:9080)
05-14 12:29:07.679: E/AndroidRuntime(30842):    at android.os.Handler.handleCallback(Handler.java:587)
05-14 12:29:07.679: E/AndroidRuntime(30842):    at android.os.Handler.dispatchMessage(Handler.java:92)
05-14 12:29:07.679: E/AndroidRuntime(30842):    at android.os.Looper.loop(Looper.java:130)
05-14 12:29:07.679: E/AndroidRuntime(30842):    at android.app.ActivityThread.main(ActivityThread.java:3683)
05-14 12:29:07.679: E/AndroidRuntime(30842):    at java.lang.reflect.Method.invokeNative(Native Method)
05-14 12:29:07.679: E/AndroidRuntime(30842):    at java.lang.reflect.Method.invoke(Method.java:507)
05-14 12:29:07.679: E/AndroidRuntime(30842):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:864)
05-14 12:29:07.679: E/AndroidRuntime(30842):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622)
05-14 12:29:07.679: E/AndroidRuntime(30842):    at dalvik.system.NativeStart.main(Native Method)
05-14 12:29:15.569: W/IInputConnectionWrapper(30870): showStatusIcon on inactive InputConnection

最佳答案

我猜这个sharedData是一个TextView。当结果为空时,您仍在尝试解析结果,因此是 NFE。进行检查以仅在存在有效数字时运行该代码。您正在检查它是否为 nullTextView 可能不是,但内容是一个空的 String,您正在尝试解析

改变

if (sharedData == null)

类似于

if (sharedData == null || sharedData.getText().toString().equals(""))
{
    ...

我会尝试将该行之前的文本放入您的stringData变量中,然后检查它是否为空。此外,您还需要在解析代码周围放置一个 try/catch ,以防它们尝试输入非数字并显示消息,除非您已经这样做了

关于java - 警报对话框无法正常运行。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16548571/

相关文章:

java - 在控制台管理多个线程

java - SQL SELECT 和时间戳列

java - 通过单击按钮获取父对象

android - 处理在 BaseGameActivity 或 SurfaceView 中按下的后退按钮

javascript - 跨浏览器addEventListener

css - Jeditable 按钮样式问题

javascript - 如何在 jquery 中将 2 个按钮合并为 1 个按钮

java - 在 Spring Boot 中以编程方式配置 DataSource

java - 删除单个逗号但不要删除句子中的 3 个相邻逗号

android - ScaleGestureDetector.onTouchEvent 总是返回 'true'