简体   繁体   English

Android应用程序在Calender.getInstance上没有响应

[英]Android app not responding at Calender.getInstance

I am trying to get date doing calculations. 我正在尝试获取日期进行计算。 For that I'm using Calendar cal = Calendar.getInstance(); 为此,我使用Calendar cal = Calendar.getInstance(); I am using this import import java.util.Calendar; 我正在使用此导入import java.util.Calendar; When the app comes to onResume I am calling a method. 当应用程序打开onResume我正在调用方法。 In that method, the first line is getting Instance(). 在该方法中,第一行正在获取Instance()。 But for some reason, I am getting this error(ANR). 但是由于某种原因,我遇到了这个错误(ANR)。

    at java.util.Calendar.getInstance(Calendar.java:960)
    at java.util.GregorianCalendar.<init>(GregorianCalendar.java:231)
    at java.util.GregorianCalendar.<init>(GregorianCalendar.java:330)
    at java.util.Calendar.<init>(Calendar.java:718)
    at java.util.Calendar.<init>(Calendar.java:712)   
Caused by: com.github.anrwatchdog.ANRError$$$_Thread: main  
Caused by: com.github.anrwatchdog.ANRError: Application Not Responding
    at com.github.anrwatchdog.ANRWatchDog.void run()(SourceFile:212)
    at com.splunk.mint.Mint$3.void onAppNotResponding(com.github.anrwatchdog.ANRError)(SourceFile:297)
java.lang.Exception: com.github.anrwatchdog.ANRError: Application Not Responding

EDIT (adding code as asked) 编辑(按要求添加代码)

public static int getCategory(final String time) {
    long thenTime = SDKUtils.getLong(getLongValue(time));
    Calendar c1 = Calendar.getInstance(); // today
    Calendar c2 = Calendar.getInstance();
    c2.setTime(new Date(thenTime)); // your date
    if (c1.get(Calendar.YEAR) == c2.get(Calendar.YEAR) && c1.get(Calendar.DAY_OF_YEAR) == c2.get(Calendar.DAY_OF_YEAR))
        return TODAY;
    c1.add(Calendar.DAY_OF_YEAR, -1); // yesterday

    if (c1.get(Calendar.YEAR) == c2.get(Calendar.YEAR) && c1.get(Calendar.DAY_OF_YEAR) == c2.get(Calendar.DAY_OF_YEAR))
        return YESTERDAY;
    c1 = Calendar.getInstance();
    if (c1.get(Calendar.YEAR) == c2.get(Calendar.YEAR) )
        return MONTH;
    else
        return YEAR;

}

public static String[] getSubTime(final String time, final int category) {

    Calendar cal = Calendar.getInstance();
    Date date = new Date(SDKUtils.getLong(getLongValue(time)));
    TimeZone tz = TimeZone.getDefault();
    cal.setTime(date);
    cal.setTimeZone(tz);
    int hour = cal.get(Calendar.HOUR_OF_DAY);
    if (hour > 12)
        hour = hour - 12;
    int min = cal.get(Calendar.MINUTE);
    String hourStr = hour < 10 ? "0" + hour : "" + hour;
    String minStr = min < 10 ? "0" + min : "" + min;
    String am = cal.get(Calendar.HOUR_OF_DAY) < 12 ? " AM" : " PM";
    switch (category) {
    case TODAY:
    case YESTERDAY: {
        return new String[] { hourStr + ":" + minStr + "", am };

    }
    case MONTH: {
        int date_ = cal.get(Calendar.DAY_OF_MONTH);
        String dateString = date_ < 10 ? "0" + date_ : date_ + "";
        return new String[] { dateString, hourStr + ":" + minStr + "" + am };

    }
    case DATE: {
        int date_ = cal.get(Calendar.DAY_OF_MONTH);
        String dateString = date_ < 10 ? "0" + date_ : date_ + "";
        return new String[] { dateString, hourStr + ":" + minStr + "" + am };
    }
    default: {
        String month = convertNumberToMonthMMM(cal.get(Calendar.MONTH));
        int date_ = cal.get(Calendar.DAY_OF_MONTH);
        String dateString = date_ < 10 ? "0" + date_ : date_ + "";
        return new String[] { month + " " + dateString, ", " + hourStr + ":" + minStr + "" + am };
    }
    }

}

These are the two methods i call. 这是我调用的两种方法。 what is wrong? 怎么了?

Why you not try: 为什么不尝试:

public class MainActivity extends AppCompatActivity
{
    Calendar c = Calendar.getInstance();

    @Override
    protected void onCreate(Bundle savedInstanceState) {

    }
}

Edit: I think you're using: 编辑:我认为您正在使用:

import java.util.GregorianCalendar;

You try (add or) instead of: 您尝试(添加或)而不是:

import java.util.Calendar;

Regards 问候

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM