【发布时间】:2013-12-27 20:52:00
【问题描述】:
我认为我正在检查的变量为空。 我的简历方法是这样做的:
此方法检查网络上的电子邮件,如果出现问题,将返回 -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
}
}
这是我的用户遇到的错误:
java.lang.RuntimeException: Unable to resume activity {com.codalata.craigslistchecker/com.codalata.craigslistchecker.ItemView}: java.lang.NullPointerException
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2578)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2606)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2092)
at android.app.ActivityThread.access$600(ActivityThread.java:133)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1198)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4777)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at com.codalata.craigslistchecker.ItemView.onResume(ItemView.java:77)<------/**/error/**/
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1184)
at android.app.Activity.performResume(Activity.java:5082)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2568)
我应该像这样检查并设置它吗?
if(EMAIL == null){
EMAIL = "E-mail: No Email Available"
tvEmail.setText(EMAIL);
}else {
tvEmail.setText("E-mail: " + EMAIL);
}
【问题讨论】:
-
Waht 是
tvEmail,您确定它不为空吗? -
tvEmail必须是null它不会是您的EMAIL变量,因为您甚至没有在该行上使用它。发布您如何初始化tvEmail -
在该行放置一个断点。调试你的程序。检查变量。什么是空?
-
你在哪里创建
tvEmail?我们能看到那个代码吗? -
“我想我只是在 onResume() 中再次初始化它以防万一。”这太疯狂了。找出阻止它被初始化的异常并修复它,或者只是将初始化移到
try/catch之外。可能没有理由将其初始化两次“以防万一”
标签: java android variables null