2015-01-01から1ヶ月間の記事一覧
カスタムThemeを定義し、それをActivityのThemeにすればよい。 詳細は下記サイトの例参照。 How to change the font size of tabhost in android
sizeがunknownな場合に-1を返す仕様らしい。 zipファイルをmacで作ると-1を返すようになり、Windowsで作ると正しいサイズをとれるようになった。 うーん、なぜだ。 参考: Inconsistency between ZipEntry size for ZipInputStream and JarInputStream
Contextの以下のメソッドを使うと取得できる。 getResources().getResourceEntryName(int resid); // または以下 getResources().getResourceName(int resid); 参考: How to get Resource Name from Resource id
またRobolectricのつらみ記事です。 非同期処理のテストを行う場合、Robolectric.runBackgroundTasks();を使ってBackgroundTaskを実行するが、ExecutorServiceを使って非同期にしている場合はrunBackgroundTasksが効かなかった。 ExecutorServiceのShadowと…
こんなのよくやることだと思うのに、dirty hackな方法しか見つからなかった。。 もっとまっとうな方法はないんだろうか? RobolectricTestRunnerのサブクラス(MyTestRunner)を作る。 MyTestRunnerに以下を実装してassets/resourcesフォルダを追加する @Overr…
spyでやる場合は以下のように書く。 target = Mockito.spy(new MyClass(Robolectric.application)); // targetのcheckメソッドをMockにする。引数に何を渡されたときでもMockにしたい場合は // Mocito.<引数の型>any()を渡す。 doNothing().when(target).che…
Robolectricで単体テスト実行中にBuild.VERSION.RELEASEからOSのバージョンを取得すると、"unknown"が返ってくる。 これでは都合が悪いので、テスト実行開始時にBuild.VERSION.RELEASEを書き換えてやろうと思ったのが事の発端。これが結構大変だった。。 や…
potatotips#14に行ってきます。発表資料は以下。 発表資料 もう14回もやってるんだねぇ。すごい。
Nexus Oneでアプリを表示するとレイアウトが崩れて悲しい思いをしたのでどうレイアウトを作ればいいか調べた。 dp単位でも端末によって横幅は多少違いが出るらしい。が、320~384に収まっているのでこの両端でチェックすればOKであろうという結論になった。 …
使い方は下記記事参照。これでInstanceStateの取り扱いのダルさがかなり軽減されそう。 Android の罠 [1] ちゃんと onSaveInstanceState する - Qiita てかアプリの状態の復元ぐらいラインタイムの方でやってよ。。 フィールド変数が突然消えないiOSは幸せだ…
いずれalfred workflowを使って起動できるようにしたい。 手でやる場合の手順は以下。 VBoxManage list vmsでVMのリストを取得する /Applications/Genymotion.app/Contents/MacOS/player --vm-name ""でVMを起動する 手でやるんだったらGUIからやるわって感…
Cmd+;でProject Structureを開き、Dependenciesタブを開き、+ボタンをクリックして表示されるウィンドウでmaven centralに登録されているライブラリを検索できる。 butterで検索しても何も表示されなかったが、butterknifeで検索したらヒットした。部分一致…
ライフサイクルイベントがどんな順番で呼ばれているかなど調べるときに、メソッドにログを仕込むことは良くある。これを簡単に実装するには以下のようにする。getStackTrace()[3]の3の理由は0,1にはVMやthreadのメソッド名が入っているため。 public class M…
Androidでは裏にいるアプリをOSがKillすることがある。この時の挙動をデバッグしたい場合の手順は以下。 エミュレータでアプリを起動する 設定>端末情報>ビルド番号を10回タップして開発者向けオプションを表示する 開発者向けオプションをタップし、「デバ…
最近ユニクロの極暖と↓のxterraのアンダーウェアを交互に着てる。 Amazon.co.jp: 【HOT XTERRA】冬用HEAT GEAR 防寒・発熱アンダーウェア ラウンドネック コンプレッションウェア R24 (ホワイト, L): スポーツ&アウトドア xterraのアンダーウェアは大体極暖…
Genymotionでアプリを動かしているときに、 キーボードからアプリに文字を入力したい・・・と思いその方法を探してみた。 以下の手順で入力できるようになる。 Settings>Language & input>Defaultをタップする HardwareのところにあるswitchをONにする 下記…
画面レイアウトを作るときに、Designtime Layout Attributesがめっちゃ便利だった。 CustomViewクラスを作っている場合はisInEditMode()を使ってちゃんとプレビュー出来るようにしておくことが大事。 XMLを修正→レイアウト確認→XML再修正のサイクルがかなり…
ある秒数だけ待ってメインスレッドである処理をしたい場合、HandlerのpostDelayedを使えば良い。遅延実行させるのにTimerオブジェクト使ってたけど、いらなかった。。 修正前のコードは以下。 retryTimer = new Timer(); retryTimer.schedule(new TimerTask(…
Settingアプリを起動>「Language & input」を選択>一番下に「日本語」があるので選択 で日本語になる。
以下のようなメソッドが同じクラスに定義されている時、 setHoge(Integer num) setHoge(Double num) setHoge(null);を呼んでいるところでエラーになる。 原因はnullには型情報が無いので、どっちのメソッドを呼べばいいかが分からないため。 以下のように型…
メリデメは以下。 メリット 3カラム表示でのマージが楽。↓のような感じ。コレに慣れると1カラムでマージとか良くやってたな・・・と思う。 マージ機能が賢いっぽい。GitTowerでコンフリクト○件と表示されたのをKaleidoscopeでマージしようとするとコンフリク…
原因はアプリ独自のThemeを定義していたが、textviewstyleをその中で定義していなかったこと。 styleを一つずつ定義していくのは大変なので親Themeを指定して解決した。 styles.xmlは以下のような感じ。 <resources> <style name="AppTheme" parent="android:Theme.Black"> <!-- Customize your theme here. --> </style> </resources>
原因はbackground threadでUIを触るなどmain threadでしかできない操作をしていること。 下記記事の方法でmain threadで実行するようにすると直った。 2015-01-08 - 日々精進 参考: Androidでスレッド内でアラートを出すと
やり方は以下。 Handerクラスのオブジェクトをmain threadで生成する background threadでhandler.post(Runnable)を実行するとRunnable#runの中がmain threadで実行される。 参考: Android: Accessing UI Element from timer thread
原因は恐らく以下。 ・mergeタグを使っている ・android annotationsを使っている CustomViewクラスを定義している場合、xmlではmergeタグをRootにする。 その場合AdapterのgetViewメソッドでinflateメソッドを呼ぶ時に、第三引数にparentを渡さないといけな…
Genymotionで起動したエミュレータのプロキシ設定で、プロキシのホストを10.0.3.2にすればよい。ポートは8080。プロキシ設定の手順は以下参照。 検証機なし!Genymotionの導入でAndroidブラウザのデバッグが楽ちんに - Qiita 参考: How to access localhost…
クラス名.thisを使えばいい。 MyFragmentクラス内なら以下のようなコードになる。 messageDialog.setOnClickListener(new MessageDialog.OnClickListener() { @Override public void onClick(final Bundle param) { subscriber.subscribe(MyFragment.this); …
メニューのTools>Black List...を選択し、サーバのIPを入力するとサーバと通信できなくなる。 参考: Black List Tool • Charles Web Debugging Proxy
テストカバレッジを出力する設定をOFFにすると直った。 具体的にはbuild.gradleの以下をコメントアウトした。 buildTypes { debug { testCoverageEnabled = true } } 参考: https://code.google.com/p/android/issues/detail?id=78045
原因はコンストラクタが足りないこと。 下記のコンストラクタは必ず定義しないといけない。 public CustomView(Context context){ super(context); } public CustomView(Context context,AttributeSet attrs,int defStyle){ super(context,attrs,defStyle); …