プログラマってこんなかんじ??

アプリ作ったり歌ったりしてます

画面回転してもFragment再生成しないでレイアウト変更したい+取得したデータ使い回したい

お題 画面回転させて、縦/横で別のレイアウトを表示する 縦画面のときは ListView を表示 横画面のときは GridView を表示(1行2列) ただし、一度取得したデータは使いまわしたい 縦画面 横画面 実装のポイント Activity コンフィグ変更のたびに毎回 再生成 F…

はてなblogに移行しました

一括インポート機能を使用して移行してみました。 idが dai4649 だったり。 URLは daichan4649 だったり。 いろいろとややこしいのですが、こちらでも4649お願い致します!

Activity再生成時のデータの保存・復元(Fragment#setRetainInstance)

ネットワークからデータ取得(画像とか) データ取得完了したら画面にデータ反映 こういうパターンってよくありますよね。このときに画面回転等のコンフィグ変更(縦横切替とか)が行われると 「Activity のインスタンスが破棄->再生成」 されるので、何も考えて…

DialogFragment使用時に画面の回転で例外発生(InstantiationException)

DialogFragment を private なインナークラスで定義してたら、 画面の回転(Activity再生成) でアプリが落ちてしまった。出力された例外はこれ。 Caused by: android.app.Fragment$InstantiationException: Unable to instantiate fragment ErrorCaseDialogFr…

Android UI Cookbook for 4.0 輪講会 vol.1

Androidの会福岡支部メンバー数人で輪講会をはじめました。今回のお題は通称 yanzm本2 と言われている、 Android UI Cookbook for 4.0 ICSアプリ開発術 です。実はちょっと前に Effective Java 第2版 の輪講をやってみたのですが、 それがまたなかなかおもし…

AsyncTask の挙動(AsyncTask#executeOnExecutor) その2

前回のエントリで AsyncTask#execute の挙動がAPI Levelによって違う、とわかりました。 では、どこで切り替えているのか。 てなことを twitter上 でぎゃーぎゃー言ってたら @zaki50さん から情報をいただきました! (@zaki50さん、ありがとうございます!) …

AsyncTask の挙動が異なる(AsyncTask#executeOnExecutor)

AsyncTask の挙動が Gingerbread と ICS で違う、という話を聞いて調べてみた。複数AsyncTask実行=バックグラウンドで並行処理 と考えてると、実は並行処理になってなくて処理が遅い、ってこと。結論を言うと、ソースをここだけ修正すればよさそう。 修正方…

ListViewの高速スクローラまわりをカスタマイズ(AbsListView#setFastScrollEnabled)

前回 のエントリに引き続き、さらに ListView の高速スクローラまわりをカスタマイズしてみました。 (ついでにタイトル変更) 環境 2.3.3(API Level10)before after スクローラもいじったりましたwここで疑問。 ICSではどうなるのだろうか。 とりあえずソー…

ListView の高速スクロール時ガイドを編集する(AbsListView#setFastScrollEnabled)

Android Advent Calendar 12/18 担当の @daichan4649 です。 豪華メンバーがものすごく有意義なネタを記載されている中で、 空気を無視して ListView について誰得なネタを書いてみるとします。 ListViewには項目が多い場合に 「高速スクローラ」 を表示する…

Android Make Days in 明星和楽 にスタッフとして参加してきました

11/11金 - 12土 で行われた Android Make Days in 明星和楽。 今回自分はスタッフとして参加させていただきました。メイン作業は司会。 部屋が複数あるので3人で交代しつつ、とのことだけども。 こんなでかいイベントで司会とか!!不安でガクブル。 と、自…

Intentの作り方

Activity/Service起動用のIntentを作るとき、 皆どうやってるのだろう、とふと疑問。 例えば Activity#onCreate 内で 「Service(test.intent.TestService)起動用のIntent」 を作るとする。 基本的な作り方はこんなかんじになるのかな? @Override public voi…

別スレッドでキュー管理(Handler, Looper, HandlerThread)

非同期処理を組んでると、 「別スレッド上でも Handler みたいなキュー管理がしたい」 って時があったりしますよねー。(きっと) そんなとき、HandlerThread を使うとわりと簡単に実装できたりする。 HandlerThread(公式) HandlerThread は java.lang.Thread …

東日本大震災から半年経って思うこと

実は母親と祖父が福島に住んでいたりする。 原発から半径数十キロとかそのレベル。 直接的な津波の被害にはあっていないのだが、 震災が起きた際にはもちろん電話も通じず、物流も止まってた。 ただ、わりと早い時間で電気/ガスも復旧し、 今は普段どおりの…

Error generating final archive(Debug Certificate expired on~) が発生する

androidプロジェクト をビルド時に突然こんなエラーが出るようになった。 Error generating final archive: Debug Certificate expired on 〜 調べてみると「デバッグ用証明書の期限切れ」で発生するエラー、とのこと。 対処方法は2種類あるみたい。 debug.k…

例外catch漏れ対策(UncaughtExceptionHandler)

全ての例外を自前でcatchしていれば何の問題もないんだけれども、 もしアプリ内で例外catch漏れしてしまった場合、 Dalvik VM まで例外が通知されて 「〜が予期せず停止しました。やり直してください」 のダイアログが出てアプリが強制終了してしまう。 これ…

処理時間測定方法(android.util.TimingLogger)

例えば、アプリ内のボトルネック調査するとき、 重そうな処理にアタリつけて処理時間測定しますよね。 ベタにやるとこんな感じ。 // 測定開始 long start = System.currentTimeMillis(); // 測定したい処理 // 測定終了 long end = System.currentTimeMillis…

Android技術者認定試験制度

自分の Android に関する知識がすごく狭い範囲に偏っているなぁーと 意識することが最近よくあって。 全体を知るために何したらいいのかなーと考えたときに この Android技術者認定試験 を思いだしたので 試験内容を改めてチェックしてみました。 試験は以下…

NativeDriver

Google謹製のテストフレームワークが! Introducing Native Driver サンプルではGoogleMapのテストが記載されとりますね。これはおもしろい。 Android Zaurusさんの日本語訳はこちら。 【超訳】AndroidのUIをUnitTestできるNative Driver テストコード書くの…

ソース内の改定履歴

バージョン管理にコメントを残したとしても、ソースコードに改訂履歴のコメントを残す必要があるという主張 - プログラマとSEのあいだ 考えさせられた。 今の職場は svn 使用してます。 このあたりの意見は個人によってさまざま。 むしろコミットログ詳細を…

ADTのレイアウトエディタがすごい件

いつのまにか ADTのレイアウトエディタ が恐ろしく進化している!! 11(preview版)では xml を直接いじらなくても エディタ上だけでこんなことができたりする。 (正確には 10.x でも動作する機能が一部あり) 共通レイアウトの抽出 アニメーションのプレビュ…

ダイアログの縦横切替でメモリリーク(XxxActivity has leaked〜)

AlertDialog.Builder#show〜 でダイアログ表示した状態で、 画面の縦横切替 を行うと例外発生してアプリ終了してしまった。 ログを見るとこんなエラーログが出力されている。 XxxActivity has leaked window com.android.internal.policy.impl.PhoneWindow$D…

端末起動時に起動する常駐serviceのデバッグ(ACTION_BOOT_COMPLETED)

表題のような常駐serviceを作成しようとすると BroadcastReceiver が intent(ACTION_BOOT_COMPLETED) を受けたらそれを契機にservice起動する という仕組みが主流だと思う。(自分はこれしか知らない)こんなserviceをeclipseで修正/動作確認しようとすると、 …

訃報

福岡でコミュニティ活動等いろいろな活動に尽力されていた、 @sugmak こと 杉山誠氏 が 2010/7/25 に永眠(享年44歳)されました。 自分が初めて参加した PHP in Fukuoka。 webのいろはもよくわかっていない、 コミュニティのこともよくわからない。 知り合い…

flickrでGuestPassつき写真(オリジナル)を一括ダウンロードする

みんなで撮った写真を共有するとき、みんな何のwebサービス使ってるのだろう。 自分はオリジナル画像を手元に残しておきたい派なので、 ULしている画像を簡単に一括DL可能なPicasaを使用してて。 まわりのメンバーがよく使用しているflickrには一括DLする方…

日本語変換したら落ちる

昨日の話。いつもどおりSMS作ってたらとつぜん強制リセット。 画面にノイズが走ってぶつっと。appleマークが表示され。再起動後。SMSの続きを書く。 問題ないなーと思ってると今度はSMSだけが強制終了してホーム画面へ。 ここからはどのアプリでも日本語入力…

Java で Felica いじり

あけましておめでとうございます + ひさびさの更新。今年の目標は「健康第一、すべて自己責任」。うちらの仕事はカラダが資本。普段の生活も大事にしつつ、がんばろうと思ってる次第です。今後とも4649お願いいたします。 という年始エントリ。完全に出遅れ…

サト研に行ってきたよ

10/17(土)13時〜 AIPカフェにて、サト研(サイト運営・管理研究会(仮)Vol.10) が開催されたので参加してきました!前日に @Yaive、@hsmt と飲んだ際に顔出しちゃいなよ、ということになって。うっかり飛び入り参加させていただきました。参加表明すらしてな…

ループ時にプロパティアクセス回数を意識する

またまた id:yone098 にありがたい助言をいただいた。ループ処理書くとき、いつもこんな風に書いてた自分。 int[] objs = new int[Integer.MAX_VALUE / 10]; long start = System.currentTimeMillis(); for(int i=0; i

Mapの初期化

Mapの初期化をするとき、いままでこんなかんじでstaticブロックでやってたり。 private static Map<String, String> map = new HashMap<String, String>(); static { map.put("key", "val"); } んで、今日こんな方法もあるよー、と id:yone098 に教えていただいた。 private static Map<String, String> map =</string,></string,></string,>…

ボーリング部

今日のランチのときに「ひらた君ってボーリング顔よね」と言われたのでラウンドワンに会社のみんなとボーリングに行ってきた。みんなは名字でゲーム登録。自分は新人のくせに調子にのってこんな名前で登録。空気を読まない男。かつてないハイレベルな争い。…