Calendar.setTime() - 空指针异常:Android

时间:2012-07-04 18:51:28

标签: android calendar simpledateformat

我需要以下崩溃报告的帮助。奇怪的是,我测试过的所有设备都没有产生这个错误。但我的崩溃报告显示,在2周内,其中大约有60起。很明显,它要么限于特定的品牌和设备型号,要么是OS版本。我的应用程序在2.2以上的所有版本上都处于活动状态,因此我正在修复以确定实际问题。日志报告没有给我足够的研究信息。 应用程序正常运行且安装量超过2500次“有75%的有效安装次数多数情况下,这表明该问题仅限于少数用户。非常感谢任何帮助。

**背景:1)应用程序显示特定事件的倒计时时间,静态时间将其转换为本地时区并计算差异。显示'天','小时','最小'和'秒'

2)少数用户在不同的时间表屏幕上报告了一个非常类似的错误。

  

java.lang.RuntimeException:无法启动活动   ComponentInfo {alfi.programs.olympics2012 / alfi.programs.olympics2012.OlympicsMainScreen}:   java.lang.NullPointerException at   android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1997)   在   android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2018)   在android.app.ActivityThread.access $ 500(ActivityThread.java:139)at   android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1124)   在android.os.Handler.dispatchMessage(Handler.java:99)at   android.os.Looper.loop(Looper.java:152)at   android.app.ActivityThread.main(ActivityThread.java:4636)at   java.lang.reflect.Method.invokeNative(Native Method)at   java.lang.reflect.Method.invoke(Method.java:491)at   com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:841)   在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)at   dalvik.system.NativeStart.main(Native方法)引起:   java.lang.NullPointerException at   java.util.Calendar.setTime(Calendar.java:1325)at   java.text.SimpleDateFormat.formatImpl(SimpleDateFormat.java:536)at   java.text.SimpleDateFormat.format(SimpleDateFormat.java:818)at   java.text.DateFormat.format(DateFormat.java:376)at   alfi.programs.olympics2012.OlympicsMainScreen.getLocalTimeCountDown(OlympicsMainScreen.java:393)   在   alfi.programs.olympics2012.OlympicsMainScreen.countDownTime(OlympicsMainScreen.java:284)   在   alfi.programs.olympics2012.OlympicsMainScreen.onCreate(OlympicsMainScreen.java:55)   在android.app.Activity.performCreate(Activity.java:4521)at   android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1072)   在   android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1961)   ......还有11个

   private String getLocalTimeCountDown(Object date, Object time){

        String time1 = time.toString();
        String timeStart = time1.substring(0, 5);

        String fromDateString = date.toString() + " / " + timeStart + " GMT+01:00";

            DateFormat formatter = new SimpleDateFormat("dd MMM / HH:mm zzz");

            Date fromDate = null;
            try {
                fromDate = (Date)formatter.parse(fromDateString);
            } catch (ParseException e) {
                Toast.makeText(getApplicationContext(), "Oops.. there seems to be some problem... Report" +
                        " this immediately using the feedback link from the Main Screen.", 500).show();
            }
            TimeZone central = TimeZone.getDefault();
            formatter.setTimeZone(central);

            return  formatter.format(fromDate);
     }

1 个答案:

答案 0 :(得分:0)

好吧,我怀疑问题是有一个ParseException - 您已经抓住了完全忽略了。那就是fromDate为空,所以当你再调用formatter.format(fromDate)时,你会传递一个空引用,这是你不应该做的。

你几乎永远不会拥有像这样的空捕获块。如果文本无法正确解析,您想要做什么?