2012-03-14 102 views
0

我已經發布了一個應用程序,最近我發現它不能100%正確使用外語(法語是準確的)。Android Eclipse應用程序無法在數據庫中以外語正常工作

它似乎工作正常,直到我從數據庫創建一個遊標並操縱我返回的數據。我有文本視圖,或者用默認文本變灰,或者用光標返回的內容填充。發生的事情是它沒有做這些事情,而只是使用我創建的佈局中的文本。

下面是代碼:

光標項= mDbHelper.fetchItem(mItemId);如你所見,我做一個檢查,看看被調用的數據庫項是否爲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); 

問題的日期格式爲月,日,年。所以我知道問題在哪裏發生,但我仍然無法弄清楚原因。有任何想法嗎?

+0

是您的laout本地化? – 2012-03-14 19:19:42

回答

0

我發現我得到的不可解析的日期異常只是來自不正確的格式,而且我的代碼只是停在異常,這是什麼導致了我原來的問題。

以供將來參考,如果要分析類似「2012年10月5日」:

private static final String DATE_SQL = "yyyy-MM-dd"; 
private static final String DATE_FORMAT = "MMM dd, yyyy"; 

DateFormat df = new SimpleDateFormat(DATE_SQL, Utility.getLocale()); 
Date dateObj = df.parse("2012-10-05"); 

//Format it to a more user friendly date 
System.out.println(sdf.format(dateObj)); //Oct. 05, 2012 
1

兩個想法,可能不相關:

  1. 爲什麼airline.equalsIgnoreCase("null")? 沒有看到它是「空」(字符串)的任何理由,應該是airline.isEmpty()

  2. 你應該改變

if (mCursor != null) {

if ((mCursor != null) && (mCursor.getCount() != 0)) {

當你調試的是航空公司的價值? (當語言是法語) 檢查日誌貓,它真的聽起來像你有一個例外的地方,這就是爲什麼如果「不工作」

第二件事,似乎很合理......(你' [R查詢返回0的記錄,而您試圖移動到第一個...)

編輯: 從註釋中,所以這將是更容易閱讀:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); 
String locale = prefs.getString(Preferences.KEY_LOCALE, "null"); 
return locale; 

將得到的語言環境(例如,fr_FR,如果它是法語的話(如果我不是worng ..))

+0

感謝您的建議。我會更新我的代碼以使用這些最佳實踐,但我認爲我發現問題出現的位置並更新了我的原始問題。儘管 – Nick 2012-03-14 19:41:08

+0

嘗試使用區域設置,但仍然沒有解決方案:DateFormat df = DateFormat.getDateInstance(DateFormat.LONG, Locale.FRANCE); – 2012-03-14 19:47:46

+0

這將工作,但如何能夠動態地切換語言環境?如果我有來自20個不同國家的用戶,有沒有辦法讓它動態化? – Nick 2012-03-14 19:52:42

相關問題