Android

Android Studio で "Unable to save settings: Failed to save settings. Please restart Android Studio" とか "Gradle sync failed: Access is denied" とか"

sudo nautilus でファイラを開く 対象のディレクトリのプロパティから権限を変更。 読み取りと書き込みにする

メモ:RxJavaの購読と解除のタイミング

今は薄いActivity + Fragmentの構成でMVVMをやることが多い。 その場合同じ画面の、Fragment、ViewModel、Model毎にCompositeDisposableを作って、onCreateView/onDestroyVIewのタイミングでそれぞれの購読解除をするという方式にすると良さそう。

databindingを新しくしたらvisibility周りの挙動が変わっていた

RxPropertyを使ってvisibilityの切り替えをする場合 android:visibility="@{viewModel.isVisiblememoHintTextViewRxProperty.value}" みたいな形でbooleanを渡すだけで切り替えができていたのが、できなくなっていた。 しかも過去はできていた分エラー情報の…

他アプリのパッケージ名とActivityの名前を取得する

他のアプリのActivityを開きたいときがあって、手っ取り早く見る方法。 Android端末を繋いでAndroid Studioを開くとログキャットが出る。 その状態で適当なアプリを開いて、ComponentInfoでログキャットを検索する。 あとは下記の通り。 memo.abridge-lab.com

RxPropertyでボタンを非活性にする

RxPropertyというライブラリを使っています。 github.com これでdatabindingするのがとても楽です。 ボタンを非活性にするのにenabled=@{viewModel.isEnableButton.value} みたいにやろうとして詰まりました。 このライブラリは本当によくできているので、rx…

Androidで定数をどこに定義するべきか

Androidで定数をどこに書くか問題 pooh3mobi.hatenablog.com これを見ると、コード内でのみ使う定数はxmlに書くべきじゃないみたい。 ユーザーに見えるstringはxmlに書くべき。 じゃあコード内でのみ使う定数はどこに書くか yyyank.blogspot.com 定数クラス…

RealmListのaddChangeListenerの仕組み

英語が読めない上にあんまり情報がなくて詰まっていたので自分用メモ。 realmList.addChangeListener { newRealmList, changeSet -> } みたいにするとchangeSetで挿入と削除した要素番号がとれる。 挿入の場合はchangeSet.insertions 削除の場合は changeSet…

Android StudioのADB IDEAがかなり便利なのでご紹介

簡単に言うと、データを消したり再起動したりが便利にできるプラグインです。 詳細は以下に詳しいです。 AndroidStudio からアプリを停止したりデータを消したりアンインストールできるプラグイン「ADB Idea」

音声ファイルを再生する

MediaPlayerを使うとうまくいった。 1. res配下にrawファイルを作る 2. mediaplayerを使う 繰り返し再生する場合はsetOnCompletionListener を使う必要がありそう。 setOnCompletionListenerと、setOnErrorListenerの実装の仕方。java、android用 ( パソコン…

SharedPreferencesにSetを保存する処理で詰まった

解決策 https://qiita.com/yasumodev/items/016b40b3c817cfec75a4 Kotprefという便利なSharedPreferencesのライブラリがあったんですが、StringSetに値を入れて、Killすると入れた値が保存されない現象に遭遇した。 これは自分の使い方が悪かったのかもしれ…

RxJava2のCompositeDisposableのdisposeとclearの使い分け

背景 ViewModelをDaggerでInjectしたときに、ActivityのonDestoryでCompositeDisposableをdispose()していたら不具合が出た。 というのも、ActivityがonDestoryされてもViewModelのインスタンスはAppilcationのライフサイクルで生成と破棄されるので、ViewMo…

Admobが表示されない場合

Admobのテストバナーは表示されるが、実際のバナーが表示されない 1. 支払い設定を済ませていない 2. テストデバイスの設定をしていない 支払い設定を済ませていない stackoverflow.com テストデバイスの設定をしていない android-note.open-memo.net

droidkaigi2018公式アプリをビルドする

cloneしてbuildしようとしてもうまくいかなくて詰まってたので。 settings.gradleのrepositoriesに↓を追加する。 rootProject.buildFileName = 'build.gradle.kts' qiita.com

TextViewのDatabindingでStringリソースを使う

// String <string name="name">My Name is %s</string> // レイアウト xml android:text="@{String.format(@string/name, viewModel.name.value)}"

Androidのサポートライブラリバージョンを一括で管理する

// build.gradle(Project) buildscript { ext.kotlin_version = '1.2.41' ext.supportLibVersion = '27.1.1' } // build.gradle(Module) implementation "com.android.support:appcompat-v7:$supportLibVersion" implementation "com.android.support:design…

Androidのパッケージ名を変更する方法

1. パッケージをリネームする 2. app の gradle の applicationId を変更する 参考: dev.classmethod.jp

Threeten ABP で2つの日付の差を出す

ChronoUnit.DAYS.between(fromDate, toDate)