オレのAndroidメモ

オレのAndroidメモ

自分自身のためのAndroidアプリ開発メモ。

Amebaでブログを始めよう!
[問題]

SimpleDateFormatで日付の文字列をDate型に格納しようしたら、Unparseable dateの例外が出る。



[症状]

RSSを取得して、日付の文字列をDate型に格納するプログラムを書いていました。


text = "Sat, 16 Jun 2012 13:29:49 +0000";

Date date;
SimpleDateFormat format = 
    new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z");

try {
    date = format.parse(text);
} catch (ParseException e) {
}


エミュレータでは正常に動作するのに、Android端末の実機で動かすと、

Unparseable date: "Sat, 16 Jun 2012 13:29:49 +0000"

というParseExceptionが発生します。




[原因]

ロケールが設定されていなかった。


SimpleDateFormat format = 
    new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z");

というところに、java.util.Locale.ENGLISHを設定すると例外は発生しなくなりました。

  ↓↓↓

SimpleDateFormat format = 
    new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z", java.util.Locale.ENGLISH);


エミュレータは英語のロケールだったので、たまたま動いていたようです。
日本語のロケールだと、「Sat」などはパースできないみたいですね。


[問題]


カスタムViewにおいて、findViewByIdでnullが返ってくる



[症状]


Viewクラスを継承して、自分の使いやすいカスタムViewを作りました。

public class CustomView extends View {
    public CustomView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
}


レイアウト用のxmlに配置して、画面上では自由に描画できるのですが、


CustomView cview = (CustomView) findViewById(R.id.idTestCustomView);


とすると、nullが返ってきます。




[原因]


コンストラクタが、

public CustomView(Context context, AttributeSet attrs) {
    super(context, attrs);
}

だけではなく、

public CustomView(Context context) {
    super(context);
}

も必要。

これでfindViewByIdに成功しました。

日本Androidの会 関西支部の勉強会に行ってきました。


NFCを使ったガードロックの話やデザインの話、GAEの話など、

おもしろそうなことが多く聞けました。


そして、最後にドロイド君のお菓子が登場。

何気にアップルを食べちゃってます。



オレのAndroidメモ-Vimi_20110903_170554.jpg


楽しい勉強会でした。

とりあえずテスト書き込み。


一応、Androidでアプリ作りをやってます。

ブログはじめました。



最近物忘れがひどくなって、「あれ? この時はどう書くんだっけ?」っと、

自分の過去のソースを探すこともしばしばあります(汗)。


どのプロジェクトで使ったんだっけ?…と、探して回ることも多くなり、

それならどこかにまとめよう!! と思ったのがこのブログの発端です。


一応公開したブログですが、だれかのために書くのではなく、

忘れん坊な自分自身のために書きます。