java - 在 Java (Android) 中检查 null 和 "emptyness"--> 崩溃

标签 java android

我做了一个 if/else 语句来检查 Edit Text 的值(Edit Text 的值保存在 myPrefs 中)是否为空。如果为空,则会显示错误。如果它不为空,另一个对话框将显示 op,用户可以在应用程序中进行更深入的操作。这就是我想要的。

问题是,当我检查它是否为空时,应用程序崩溃了。 这是我的代码,我已经实现了 ||(使用 nullisEqual(""),但是没有成功。

if (myPrefs.getString("TELHUISARTS", null).equals("") || myPrefs.getString("TELHUISARTS",null).equals(null)) {
    String contactWithQuotes = getResources().getString(R.string.Contactwithquotes);

    AlertDialog.Builder alertDialogBuilder2 = new AlertDialog.Builder(Gevaar.this);

    // set title
    alertDialogBuilder2.setTitle("No phone number found");

    // set dialog message
    alertDialogBuilder2
        .setMessage("You have not entered a phone number for your GP. You can do this at " +contactWithQuotes+ ".")
        .setCancelable(false)
        .setNegativeButton("OK",new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog,int id) {
                // if this button is clicked, just close
                // the dialog box and do nothing
                dialog.cancel();
            }
        });

    AlertDialog alertDialog2 = alertDialogBuilder2.create();

    // show it
    alertDialog2.show();
} else {
    // create alert dialog
    AlertDialog alertDialog = alertDialogBuilder.create();

    // show it
    alertDialog.show();

}

错误:

05-01 23:17:09.295  24300-24300/com.company.myapp 
E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.company.myapp, PID: 24300
    java.lang.NullPointerException
            at com.company.myapp.Gevaar$11.onClick(Gevaar.java:609)
            at android.view.View.performClick(View.java:4456)
            at android.view.View$PerformClick.run(View.java:18465)
            at android.os.Handler.handleCallback(Handler.java:733)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5086)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
            at dalvik.system.NativeStart.main(Native Method)

最佳答案

你可能想改变你的条件:

 if (myPrefs.getString("TELHUISARTS", null).equals("") || myPrefs.getString("TELHUISARTS",null).equals(null))

收件人:

 if (myPrefs.getString("TELHUISARTS",null) == null || myPrefs.getString("TELHUISARTS", null).equals(""))

你这样做的方式,如果 myPrefs.getString("TELHUISARTS",null) 确实是 null,你将得到一个 NullPointerException在第一次检查中,因为它等同于调用 null.equals("")。此外,您应该使用 == 而不是 equals() 来检查引用是否为 null

关于java - 在 Java (Android) 中检查 null 和 "emptyness"--> 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29995368/

相关文章:

java - 如何在 JFreeChart 折线图中显示数据库值

java - 为什么在使用 Class.forName(...) 时会出现 ClassNotFoundException?

android - Android 上的 HTML5 <video> 元素

java - 从某种类型的对象列表中返回匹配的对象

java - Retrofit 2 onResponse 方法从未被调用

java - 使用 Javassist 编辑 JFrame 类时出现 IllegalAccessError

java - 如何根据 Firestore 中的位置获取数据?

android - TextView 的椭圆大小不适用于 maxLines = 1

android - 在 Android 中集成 Dropbox 同步

android - 为什么我的动画不正确并且图像加载在某些图像中花费更多时间?