Java android变量空指针

Java android变量空指针,java,android,variables,null,Java,Android,Variables,Null,我想我检查的变量是空的。 我的简历上的方法是: 此方法检查web上的电子邮件,如果出现问题,将返回-1。 我想这会管用的。现在,当我运行它10次时,它工作了。所以我把它给了一个朋友。他说有时这会给他带来例外 /// Ok found it it was in a try catch in the OnCreate() tvEmail = (TextView) findViewById(R.id.itemz_email); tvEmail.setTypeface(Title

我想我检查的变量是空的。 我的简历上的方法是:

此方法检查web上的电子邮件,如果出现问题,将返回-1。 我想这会管用的。现在,当我运行它10次时,它工作了。所以我把它给了一个朋友。他说有时这会给他带来例外

///   Ok found it it was in a try catch in the OnCreate() 

tvEmail = (TextView) findViewById(R.id.itemz_email);
        tvEmail.setTypeface(TitleFont);

///  and occasionally it didn't even get initialized.
///  I guess ill just init it again in the onResume() just in case.
///  Thanks!


@Override
protected void onResume() {
    super.onResume();
    tvEmail = (TextView) findViewById(R.id.itemz_email);
        tvEmail.setTypeface(TitleFont);

    if (EMAIL != null) {
        tvEmail.setText("E-mail: " + EMAIL);
    } else {
        tvEmail.setText("E-mail: No Email Available");  //<----==LINE 77
    }
}

在包含
tvEmail.setText(…)
的行中,您将得到一个
NullReferenceException
;交换条件块以检查
EMAIL
是否为
null
vs.not不会改变事情,因为
EMAIL
不会涉及导致错误的线路


您需要查看
tvEmail
,因为这就是发生错误时的
null

在包含
tvEmail.setText(…)
的行中,您会得到一个
null引用异常;交换条件块以检查
EMAIL
是否为
null
vs.not不会改变事情,因为
EMAIL
不会涉及导致错误的线路


您需要查看
tvEmail
,因为这就是发生错误时的
null

因为我们知道null指针异常来自第77行:

tvEmail.setText("E-mail: No Email Available");  //<----==LINE 77
为确保此对象为null(检查我们是否执行了正确的解决方案),请在

 super.onResume();
插入以下内容:

if(tvEmail == null) 
    System.out.println("tvEmail is null!!!);
如果tvEmail为null,则可能需要重新创建对象,或将其设置为如下值:

 tvEmail = (TextView)findViewById(id);

因为我们知道空指针异常来自第77行:

tvEmail.setText("E-mail: No Email Available");  //<----==LINE 77
为确保此对象为null(检查我们是否执行了正确的解决方案),请在

 super.onResume();
插入以下内容:

if(tvEmail == null) 
    System.out.println("tvEmail is null!!!);
如果tvEmail为null,则可能需要重新创建对象,或将其设置为如下值:

 tvEmail = (TextView)findViewById(id);

首先检查您在Activity或Fragment.etc的
onCreate
方法中声明的对象。。 如果要在调用
onResume
方法时检查对象是否为null,则应该如下所示。请记住,在else中它将为null,因为您说过如果它不为null,则执行该操作,否则它的null集电子邮件不可用,但问题是,在else中,变量没有引用,换句话说,它为null,您还应检查变量为什么在该点为null

if (EMAIL != null) {
    tvEmail.setText("E-mail: " + EMAIL);
} else {
    tvEmail = (TextView)findViewById(id);
    tvEmail.setText("E-mail: No Email Available");
}
已编辑


这不是最好的选择,因为每次调用它时,都会在恢复时创建一个新对象。在调用
onResume
之前,应该检查变量为什么为null

首先检查您在Activity或Fragment.etc的
onCreate
方法中声明的对象。。 如果要在调用
onResume
方法时检查对象是否为null,则应该如下所示。请记住,在else中它将为null,因为您说过如果它不为null,则执行该操作,否则它的null集电子邮件不可用,但问题是,在else中,变量没有引用,换句话说,它为null,您还应检查变量为什么在该点为null

if (EMAIL != null) {
    tvEmail.setText("E-mail: " + EMAIL);
} else {
    tvEmail = (TextView)findViewById(id);
    tvEmail.setText("E-mail: No Email Available");
}
已编辑


这不是最好的选择,因为每次调用它时,都会在恢复时创建一个新对象。在调用
onResume
之前,应该检查变量为什么为null

什么是
tvEmail
,您确定它不是空的吗?
tvEmail
必须是
null
它不是您的
EMAIL
变量,因为您甚至没有在该行上使用它。张贴如何初始化
tvEmail
在该行上放置断点。调试你的程序。检查变量。什么是空的?在哪里创建
tvEmail
?我们能看到那个代码吗?“我想我会在onResume()中再次初始化它以防万一。”这太疯狂了。找出使其无法初始化的异常,并修复该异常,或者将初始化移到
try/catch
之外。可能没有理由“以防万一”两次初始化它,因为它是
tvEmail
并且您确定它不是空的吗?
tvEmail
必须是
null
它不会是您的
EMAIL
变量,因为您甚至没有在该行上使用它。张贴如何初始化
tvEmail
在该行上放置断点。调试你的程序。检查变量。什么是空的?在哪里创建
tvEmail
?我们能看到那个代码吗?“我想我会在onResume()中再次初始化它以防万一。”这太疯狂了。找出使其无法初始化的异常,并修复该异常,或者将初始化移到
try/catch
之外。可能没有理由两次初始化它“以防万一”问题不是电子邮件为空,而是tvEmail。问题不是电子邮件为空,而是tvEmail。tvEmail是一个文本视图。它应该在onCreate中初始化,但显然在某些情况下它没有被初始化。我们需要看到code.tvEmail是一个文本视图。它应该在onCreate中初始化,但显然在某些情况下它没有被初始化。我们需要看看那个密码。