Я выпустил приложение и недавно обнаружил, что оно не работает на 100% правильно на иностранном языке (точнее, на французском).
Похоже, что он работает правильно, пока я не создам курсор из базы данных и не манипулирую своими возвращенными данными. У меня есть текстовые представления, которые либо затеняются текстом по умолчанию, либо заполняются тем, что возвращается из курсора. То, что происходит, - то, что он не делает ни одной из тех вещей, и вместо этого просто использует текст, который находится в макете, который я создал.
Вот код:
Элемент курсора = mDbHelper.fetchItem (mItemId);
String airline =item.getString(
item.getColumnIndexOrThrow(TripsDbAdapter.KEY_FIELD_FLIGHT_AIRLINE));
TextView itemAirline = (TextView)findViewById(R.id.flight_item_airline);
if(airline==null||airline.equalsIgnoreCase("null")){
itemAirline.setText(R.string.default_carrier);
itemAirline.setTextColor(getResources().getColor(R.color.light_orange));
}else{
itemAirline.setText(item.getString(
item.getColumnIndexOrThrow(TripsDbAdapter.KEY_FIELD_FLIGHT_AIRLINE)));
//itemAirline.setTextColor(getResources().getColor(R.color.white));
}
Как вы можете видеть, я проверяю, является ли элемент базы данных с именем null или "null", и соответственно изменяю текстовое представление. Похоже, что это не доходит до этого, так как он не меняется вообще. Имейте в виду, что это всегда работало идеально при работе на телефоне на английском языке. Остальная часть моего приложения работает нормально на французском, кроме этой функции.
Вот и мой вызов из БД, если он нужен:
public Cursor fetchItem(long itemId) throws SQLException {
Cursor mCursor =
mDb.query(true, DATABASE_TABLE_ITEMS, COLUMNS, KEY_ITEMID + "=" + itemId, null,
null, null, null, null);
if (mCursor != null) {
mCursor.moveToFirst();
}
return mCursor;
}
UPDATE
Когда я переключаю свой телефон на французский язык, я получаю сообщение LogCat о неразборчивой дате. Код, который анализирует дату:
DateFormat df = DateFormat.getDateInstance(DateFormat.LONG);
String itemDate = item.getString(
item.getColumnIndexOrThrow(TripsDbAdapter.KEY_DEP_DATE));
System.out.println("Before PArse Dates");
Date dateObj = df.parse(itemDate);
Указанная дата имеет формат Месяц, день, год. Так что я знаю, где происходит проблема, но я до сих пор не могу понять, почему. Есть идеи?