Java android变量空指针
我想我检查的变量是空的。 我的简历上的方法是: 此方法检查web上的电子邮件,如果出现问题,将返回-1。 我想这会管用的。现在,当我运行它10次时,它工作了。所以我把它给了一个朋友。他说有时这会给他带来例外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
/// 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中初始化,但显然在某些情况下它没有被初始化。我们需要看看那个密码。