곧 출시 될 API의 일부로 Android 환경에서 더 잘 사용되도록 다음 코드를 변경하려고합니다.Android Studio에서 Java.text.DateFormat에 오류가 발생했습니다.
public class DateFormatter implement JsonDeserializer<Date>,
JsonSerializer<Date> {
private final DateFormat[] formats;
public DateFormatter() {
formats = new DateFormat[3];
formats[0] = new SimpleDateFormat(DATE_FORMAT);
formats[1] = new SimpleDateFormat(DATE_FORMAT_V2_1);
formats[2] = new SimpleDateFormat(DATE_FORMAT_V2_2);
final TimeZone timeZone = TimeZone.getTimeZone("Zulu"); //$NON-NLS-1$
for (DateFormat format : formats)
format.setTimeZone(timeZone);
}
public Date deserialize(JsonElement json, Type typeOfT,
JsonDeserializationContext context) throws JsonParseException {
JsonParseException exception = null;
final String value = json.getAsString();
for (DateFormat format : formats)
try {
synchronized (format) {
return format.parse(value);
}
} catch (ParseException e) {
exception = new JsonParseException(e);
}
throw exception;
}
public JsonElement serialize(Date date, Type type,
JsonSerializationContext context) {
final DateFormat primary = formats[0];
String formatted;
synchronized (primary) {
formatted = primary.format(date);
}
return new JsonPrimitive(formatted);
}
}
v2.1 및 v2.2는 지원할 필요가 없습니다. 그래서 배열을 제거하고 단지 하나의 인스턴스 만 코딩하려고했습니다. 그래도 오류가 발생합니다. 내가이 점을 일단, 그러나
class DateFormatter implements JsonDeserializer<Date>,
JsonSerializer<Date> {
private DateFormat formats;
DateFormatter() {
formats = new DateFormat;
formats = new SimpleDateFormat(String.valueOf(R.string.date_format), Locale.ENGLISH);
final TimeZone timeZone = TimeZone.getTimeZone("Zulu");
for (DateFormat format : formats)
format.setTimeZone(timeZone);
}
public Date deserialize(JsonElement json, Type typeOfT,
JsonDeserializationContext context) throws JsonParseException {
JsonParseException exception = null;
final String value;
value = json.getAsString();
for (DateFormat format : formats)
try {
synchronized (format) {
return format.parse(value);
}
} catch (ParseException e) {
exception = new JsonParseException(e);
}
throw exception;
}
public JsonElement serialize(Date date, Type type,
JsonSerializationContext context) {
final DateFormat primary;
primary = formats;
String formatted;
synchronized (primary) {
formatted = primary.format(date);
}
return new JsonPrimitive(formatted);
}
}
을 내가 오류를 얻을 : 여기
는 내가 지금까지 가지고있는 것입니다. 내가 현재 염려하는 주요한 것은 getString이다.내가 뭘 잘못하고 있니?
편집 : 내가 프로젝트를 빌드 할 수없는 나는, 그래서 내가 게시물에 두 번째 코드 블록을 바꾼 --stacktrace --debug
반영 당겨 수 없습니다 @trooper
내 현재 코드. 나는 바꿨다.
formats = new SimpleDateFormat(getString(R.string.date_format), Locale.ENGLISH);
to;
formats = new SimpleDateFormat(String.valueOf(R.string.date_format), Locale.ENGLISH);
그리고 첫 번째 질문이 수정되었습니다.
이제 답변 드리겠습니다. 다음 질문으로 이동하십시오. 보시다시피 첫 번째 블록의 배열에서 두 번째 블록의 단일 인스턴스로 이동하고 있습니다. 라인
for (DateFormat format : formats)
내가 모르는 무슨 일이 있음을 제거하는 방법이며, 배열에 사용되는
내가 아는 foreach는 "형식은 'java.text.DateFormat에 적용되지 foreach는 던지는는"'을 루프의 일부로 내가 원하는 것을 얻을 수 있습니다 ... 이것은 내가 정말로 잃어버린 곳입니다.
내 최종 목표는 API v2 & v3을 지원하는 Eclipse Studio 용 자바로 작성된 현재 GitHib APIv3을 Android GitHub API v3으로 변환하는 것입니다. v2를 다루지 않아도됩니다.
이 편집이 답변을 드릴 수있는 충분한 정보가되기를 바랍니다.
오류가 무엇인지 알려주지 않았습니다. 질문을 수정하고 스택 추적을 추가하십시오. – trooper
@trooper 저는 현재 집에있을 때 제 질문을 편집해야합니다. Android Studio에서 스택 트레이스를 찾는 방법은 무엇입니까? – Sc4ryb3ar