今日の役に立たない一言 - Today’s Trifle! -

古い記事ではさまざまなテーマを書いていますが、2007年以降はプログラミング関連の話がほとんどです。

Android

AndroidでのActivityの責務が大きくなりがち

Androidアプリを作ってると、すぐにActivityが巨大化する。 そこでActivityの責務を小さくしようと思ってControllerになるクラスを分割しようとするけど、Activityに対する依存度が大きくてすっきりした設計で分割できない。 誰かいい方法知りませんかー?

ダイアログの表示とボタンを押されたあとの動作のコードの書き方

ダイアログのidについて ダイアログを表示したいときは、まずActivity#showDialog(int id)を呼ぶ。 そうすると、Activity#onCreateDialog(int id)が呼ばれる(最初だけ)。 詳しく調べたわけではないけどたぶんActivity毎にAlertDialogのインスタンスをHashM…

Android+SAStruts+JSONICで実装とか

動くようになったので、メモ。 準備 まず、SAStrutsでJSONICを動かすための設定などはこちらを見てね。 ≫WebサービスAPI (JSONIC 1.3)web.xmlの該当箇所は、こんな感じで設定。 こうすれば、/app/json/entity.json みたいなURLで動いてくれる。 JSON-WebServ…

AndroidでPOSTメソッドを使ってログイン

AndroidアプリからWebアプリケーションにログインしようと思ってサンプルを探してたら、PostMethodを使えというサンプルを発見。 apacheからhttpcomponents-core-4.1.3-bin.tar.gz に入ってたjarをビルドパスに加えてもPostMethodというクラスを解決できなく…

アプリ全体でリソースを共有するには

まず、android.app.Applicationを継承したクラスを作る。 例えば、com.satoshis.hoge.HogeApplicationとする。 package com.satoshis.hoge; import android.app.Application; public class HogeApplication extends Application { } このクラスに、共有した…

EclipseでAndroidアプリを実行しようとしたら FileNotFoundException が発生して実行できない

ひさしぶりにAndroidアプリをつくろうと思って、EclipseでAndroidのプロジェクトを実行しようとした。すると、FileNotFoundExceptionが発生してなぜか実行できない。 コンソールのエラーメッセージをよくみると、 Unknown command 'crunch' なんてのが出てる…

水平方向でセンタリング

複数のウィジェットを水平方向に並べて、それをセンタリングしたかったんだけど、なかなか思うようにレイアウトできなくて困った。 できてみれば簡単なんだけど。 // センタリングしたいウィジェットを書く 最初、LinearLayoutの中に入れる個々のウィジェッ…

よく使うAndroidアプリ

日常的に頻繁に使ってるアプリをまとめてみる。まずはSNS系から。 ■Google+ 説明不要?Google+を知らない人はググッてくれ。 ■facebook これも説明不要よね? ■foursquare これも説明不要よね? ■Seasmic 主にTwitterクライアントとして使ってる。 便利ツー…

Androidアプリが終了したように見せかけて終わってない件

複数のActivityで構成するAndroidアプリを作るってことで、共通の処理をまとめたHogeActivityを作った。そのなかで、dispatckKeyEvent()をオーバーライドして、BACKキーが押されたらfinish()を呼び出すようにコードを書いた。 GPSを使うので、LocationManage…

個人レッスンの講師さん用Androidアプリ「そだてろぐ」をリリースしました。

「そだてろぐ」は、個人レッスンでなにかを教えている講師やトレーナーの方々が、「いつ」・「誰に」・「何を」指導したのかを記録するためのAndroidアプリです。要するに、「前回のレッスンでどこまでやったっけ?」「このレッスンはやったんだっけ?」とい…

AdMobのテストモード

AdMobを使ってAndroidアプリに広告を表示するとき、ぐぐってみるとこういうコードを書けばできるって書いてある。 LinearLayout layout = (LinearLayout)findViewById(R.id.hoge); AdView adView = new AdView(this, AdSize.BANNER, "hogehoge"); layout.add…

日本語版と英語版で違う画像を表示する方法

画像に文字などを含んでいる場合は、日本語版と英語版で異なる画像を表示した方がいい場合がある。最初は strings.xml に画像のファイル名を書いたりして動的に切り替えようとしたけど、どうもうまくいかない。 そこで、Localeを参照してレイアウトそのもの…

特定のメニューを動的に無効化する

Androidアプリを作ってて、res/menu/hoge.xml なんかでメニューを定義したとする。定義したメニューのうちの特定のメニュー項目だけを、特定の条件で無効化したい時がある。 onCreateOptionsMenu()メソッドの中で制御すればいい。 @Override public boolean …

Androidのsqliteで日時データを使うには

AndroidアプリでDate型のデータをsqliteに保存したいけど、sqliteはdateに対応する型を持ってない。 Androidアプリを作り始めたとき、普通の人はどうやってるんだろうってぐぐってみると、textで保存してるサンプルばかりが出てきたので、そうやって実装した…

Androidアプリでバーコードを読みたいんだけど

ぐぐれば、zxing を使えばいいってことはすぐに分かる。 さて、どういうコードを書けばいいのかを調べてみるが、いろいろとめんどくさいことを書いてあるブログなどを発見。 zxing をダウンロードして、android アプリのサンプルが含まれているので、そのコ…

AndroidプロジェクトでJUnitテスト実行としたら動かなかった

Eclipseで、Androidプロジェクトの中にJUnitテストを作った。テスト対象はPOJOなんで、通常のJUnitテストとして実行(メニューバーからだと[実行]-[実行]-[JUnitテスト])した。 すると、コンソールにこんなエラーが出て動かない。 # guarantee(_name_index !=…

IS01でroot権限ゲトしてsqlite3使うまで

Android adb sqlite3 とかでぐぐると、 $ ./adb shell とかすれば、簡単に sqlite3 が使えるように書かれてるサイトがいっぱいある。けど、そんな簡単じゃなかった。そもそも標準の状態だと su すらできないので、root 権限を取得できない。 root権限を取れ…

SpinnerでString型以外のオブジェクトを表示する

Spinnerで扱うオブジェクトは、String型とは限らないんだけど、ぐぐってヒットするサンプルはどれもString型ばかり。 ってことで、String型以外のオブジェクトを扱うための実装方法を調べてみた。 layoutは普通通りに書けばいいみたい。 とりあえず、String…

Androidでライブラリ参照したらVerifyErrorが出る

EclipseでAndroidプロジェクトを作ってて、いろんなAndroidアプリで共通に使えるようなライブラリを作った。とすると、それは別プロジェクトにした方がいいから、android-utilsとかいうプロジェクトを作って、そちらにクラスを作った。ついでに、エンティテ…

やっぱMVCアーキテクチャっしょ

Androidでアプリを作ろうとするとき、いくつかの入門的なサンプルに従って作ってたら、バッドノウハウのカタマリみたいな状況になってきた。Activityクラス内に内部クラスでListenerを実装するとか。 もうこれはメンテしたくない的な。 やっぱりクラスの責務…