当前位置: 首页 > 知识库问答 >
问题:

在空对象引用[重复]上尝试调用虚拟方法布尔java.lang.String.equalsIgnoreCase(java.lang.String)

洪开济
2023-03-14

我在运行时遇到这个错误。

java.lang.运行时异常:无法启动活动ComponentInfojava.lang.NullPointerExcture:尝试调用空对象引用上的虚拟方法'布尔java.lang.String.equalsIgnoreCase(java.lang.String)'

堆栈跟踪:

01-12 03:44:54.270: E/AndroidRuntime(1437): FATAL EXCEPTION: main
01-12 03:44:54.270: E/AndroidRuntime(1437): Process: home.saket, PID: 1437
01-12 03:44:54.270: E/AndroidRuntime(1437): java.lang.RuntimeException: Unable to start activity ComponentInfo{home.saket/home.saket.addmember.Add_Update_User}: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equalsIgnoreCase(java.lang.String)' on a null object reference
01-12 03:44:54.270: E/AndroidRuntime(1437):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
01-12 03:44:54.270: E/AndroidRuntime(1437):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
01-12 03:44:54.270: E/AndroidRuntime(1437):     at android.app.ActivityThread.access$800(ActivityThread.java:144)
01-12 03:44:54.270: E/AndroidRuntime(1437):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
01-12 03:44:54.270: E/AndroidRuntime(1437):     at android.os.Handler.dispatchMessage(Handler.java:102)
01-12 03:44:54.270: E/AndroidRuntime(1437):     at android.os.Looper.loop(Looper.java:135)
01-12 03:44:54.270: E/AndroidRuntime(1437):     at android.app.ActivityThread.main(ActivityThread.java:5221)
01-12 03:44:54.270: E/AndroidRuntime(1437):     at java.lang.reflect.Method.invoke(Native Method)
01-12 03:44:54.270: E/AndroidRuntime(1437):     at java.lang.reflect.Method.invoke(Method.java:372)
01-12 03:44:54.270: E/AndroidRuntime(1437):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
01-12 03:44:54.270: E/AndroidRuntime(1437):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
01-12 03:44:54.270: E/AndroidRuntime(1437): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equalsIgnoreCase(java.lang.String)' on a null object reference
01-12 03:44:54.270: E/AndroidRuntime(1437):     at home.saket.addmember.Add_Update_User.onCreate(Add_Update_User.java:38)
01-12 03:44:54.270: E/AndroidRuntime(1437):     at android.app.Activity.performCreate(Activity.java:5933)
01-12 03:44:54.270: E/AndroidRuntime(1437):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
01-12 03:44:54.270: E/AndroidRuntime(1437):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
01-12 03:44:54.270: E/AndroidRuntime(1437):     ... 10 more
01-12 03:44:54.272: W/ActivityManager(472):   Force finishing activity home.saket/.addmember.Add_Update_User
01-12 03:44:54.273: E/ActivityManager(472): Invalid thumbnail dimensions: 384x384

下面我张贴了代码并指出了错误行。

添加\更新\用户。爪哇:

@Override
    protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.add_update_screen);

    // set screen
    Set_Add_Update_Screen();

    // set visibility of view as per calling activity
    String called_from = getIntent().getStringExtra("called");

    if (called_from.equalsIgnoreCase("add")) {  --->38th error line
        add_view.setVisibility(View.VISIBLE);
        update_view.setVisibility(View.GONE);
    } else {

        update_view.setVisibility(View.VISIBLE);
        add_view.setVisibility(View.GONE);
        USER_ID = Integer.parseInt(getIntent().getStringExtra("USER_ID"));

        Contact c = dbHandler.Get_Contact(USER_ID);  

        add_name.setText(c.getName());
        add_mobile.setText(c.getPhoneNumber());
        add_email.setText(c.getEmail());
        // dbHandler.close();
    }
    }

共有3个答案

江光明
2023-03-14

由于此语句而发生异常,

called_from.equalsIgnoreCase("add")

看来之前的说法

String called_from = getIntent().getStringExtra("called");

返回了一个空引用。

您可以检查启动此活动的意图是否包含这样一个键“called”。

张浩阔
2023-03-14
匿名用户

这是错误行:

if (called_from.equalsIgnoreCase("add")) {  --->38th error line

这意味着从调用的为空。在使用它之前,只需检查它是否为空:

String called_from = getIntent().getStringExtra("called");

if (called_from != null && called_from.equalsIgnoreCase("add")) {
    // do whatever
} else {
    // do whatever
}

这样,如果从调用的为null,它将执行条件语句的else部分。

白侯林
2023-03-14

从调用的必须为null。添加针对该条件的测试,如

if (called_from != null && called_from.equalsIgnoreCase("add")) {

或者您可以使用Yoda条件(根据链接的Wikipedia文章中的优点,它还可以解决某些类型的不安全null行为,它们可以描述为将表达式的常量部分放在条件语句的左侧)

if ("add".equalsIgnoreCase(called_from)) { // <-- safe if called_from is null

 类似资料:
  • 我正在尝试使用教程在应用程序中集成FireBase云消息: https://www.simplifiedcoding.net/firebase-cloud-messaging-tutorial-android/ 下面是logcat: 这是我的建筑格拉德尔: 注意:我的应用程序中没有应用程序模块。我只有一个建筑.梯度文件。 跟建筑有关吗?在官方站点中,他们说要在应用文件夹中复制json文件。不幸的是

  • 我正在发布我的应用程序的新版本,并使用谷歌的测试实验室。现在我第一次遇到了一个问题,这是在一段代码中引发的,与所有以前的版本(运行完美)相比,我没有改变代码: 只有在Galaxy S6与Android 5.1(12个设备)我得到以下错误: 问题:java。lang.NullPointerException:尝试调用虚拟方法的布尔com。谷歌。Android芬斯基。应用程序编程接口。模型DfeToc

  • 问题内容: 我收到以下错误 尝试在空对象引用上调用虚拟方法’void android.widget.StackView.setAdapter(android.widget.Adapter)’ 在这条线上 完整的片段 EventsFragment.java 是 Stack_Adapter.java Stack_Items 问题答案: 您正在执行: 你是。返回。 你为什么用? 在哪里?您应该从正确的x

  • 我的应用程序有问题,想解决它,但我无法访问解决方案,请帮帮我,,

  • 我正在尝试实现一个外部色轮,它应该出现在的片段一直在崩溃我的应用程序。我想我明白为什么会发生这种情况,但是在尝试修复它大约6个小时后,我就要放弃了。我知道之前有人问过这个问题,但是我无法为我的特定问题导出一个修复程序。下面是我的代码: 这是Logcat错误: 如果有人能帮我解决这个问题,那就太好了。提前谢谢^^ 编辑:这是我的XML,按要求:

  • 问题内容: 我尝试使用片段来打开数据库,但是,当我单击按钮开始搜索时,程序意外终止,并显示如下错误: 主片段: DBManager类: 顺便说一句,我在MainAcitivity中使用了有关DBManager的代码,并且成功了。将代码复制到上面的片段后,它失败了,该怎么办? 问题答案: 之前和之后你都做不到。 因为,您正在执行片段实例化时。该方法将始终返回null。另外,尽量不要将参考文献保留在您