365連休

にわかのandroidとかの開発メモ。

2020-01-01から1年間の記事一覧

はてなブログでもAdSense登録できました。

0円でできる、はてなブログを使用した、AdSense登録の成功例。

Android Studio 4.1 定義済みSpanを調査してみた

TextViewのsetTextにStringではなくSpannableを設定すると、細かい書式設定ができて便利。 だが、定義済みのSpanにどんなものがあるのか、網羅的リファレンスの日本語訳がないため、android.text.style.*のパッケージサマリを意訳してみた。

Javaでfinal宣言されたミュータブルオブジェクトをメンバに持つクラスはcloneできない

以下、私見です。 ミュータブルはCollectionなどの事、イミュータブルはStringなどの事 Javaのcloneはオブジェクト構造のコピーが作られる。 構造体のコピーみたいな感じ。 Javaにおいてプリミティブ値は参照を持たないから値がコピーされ、 オブジェクトは…

Android Roomが返す"LiveDataの挙動"についてメモ

Android Room Databaseの@Daoで返すLiveDataは、Observeしないとそもそもクエリを発行しない。 確認環境 implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0' implementation 'androidx.room:room-runtime:2.2.5' ある画面でRoomからLiveData形…

JavaのDateクラスとタイムゾーン

今更Dateクラス! Dateクラスにはローカルのタイムゾーンが適用される!!! でもgetTime()はGMT(≒UTC) import java.util.Date; public class HelloWorld{ public static void main(String []args){ //シリアル値から日付を取り出して再度Dateオブジェクト生…

Android Studio 3.6 Navigationで複数画面のPreferenceFragmentを使用する方法

設定.xmlのPreferenceタグにFragmentを指定すると別なPreferenceFragmentを起動できるが、Navigationを使用している場合うまく動作しない。 ちゃんと確認していないが、Navigationと複数画面のPreferenceの食べ合わせは非推奨らしい。 そこで、Navigationの…

Android Studio 3.6 ディレクトリを表すUriオブジェクトがあるか?

ディレクトリを表すUriオブジェクトはあります。

Android Studio 3.6 SavedStateViewModelFactoryがリフレクションするViewModelのコンストラクタ

前書き 筆者がぽんこつなため、この記事は一部不正確な可能性があります。ご了承ください。 前提条件 //build.gradle implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0' SavedStateViewModelFactoryって? 画面回転時とかの再生成に対応したV…

Android Studio 3.6 MediaStoreのBaseColumn._IDが主キーじゃないという話

android.provider.MediaStoreのImageColumnsもFileColumnsもandroid.provider.BaseColumnsを継承しているが、 BaseColumns._IDは主キーじゃなかったという話。 ハイラルキー BaseColumns MediaColumns ImageColumns AudioColumns VideoColumns DownloadColum…

【Self Stack Overflow】Javaで多重継承を行う方法

自問 Javaでクラスの多重継承を行う方法を教えてください。 ベストアンサー Javaで多重継承はサポートされない。 public static class H { String h = "hour"; void echo(){ System.out.println(h); } } public static class O { String o = "o'clock"; void…

【Self Stack Overflow】Javaで複数の戻り値(タプル)を持つメソッドを定義する方法

自問 Javaで複数の戻り値(タプル構造)を持つメソッドを定義する方法を教えてください。 ベストアンサー Javaのメソッドは1つの「プリミティブデータ型」または「クラス」しか返すことができない。 そこで、複数の値を持つクラスを返す方法を考える。 Java1.…

【Self Stack Overflow】Javaで16進数文字列を正しく数値及び数値型へ変換する方法

自問 Javaで16進数文字列を正しい数値及び数値型へ変換する方法を教えてください。 以下のコードはエラーになります。 Integer.parseInt("ffffffff", 16); //throws NumberFormatException Short.parseShort("ffff", 16); //throws NumberFormatException By…

【Self Stack Overflow】Javaで数値を16進数文字列へ変換する方法

自問 Javaで数値を16進数文字列へ変換する方法を教えてください。 ベストアンサー long型かint型の場合、Long.toHexString()またはInteger.toHexString()を使用する。 "0x"+Long.toHexString(-1L) //"0xffffffffffffffff" "0x"+Integer.toHexString(-1) //"0…

Java 外部からベースメソッド(super.)をコールする

継承クラスが親クラスを破壊する方法

Android Studio 3.6 【新機能】ViewBindingを使用してUI参照を簡単に取得する

先日Android Studio 3.5 -> 3.6へアップデートして、新機能をチェックしていた中で、ひとつ目に留まったのがViewBinding。 build.gradle(app) android{ compileSdkVersion… : viewBinding.enabled = true : } これを追加すると、レイアウトファイルに対し…

Android Studio 3.6 Fragment用のオプションメニューを追加しようと思ったら、onCreateOptionsMenuが呼ばれない。onPrepareOptionsMenuも呼ばれない。

Activityでオプションメニューを生成し、Fragmentからもオプションメニューを追加したいと思った時、 Fragment#onCreateOptionsMenu または Fragment#onPrepareOptionsMenu をオーバーライドするが、これだけでは不十分。 Fragment#onCreateView内でsetHasOp…

Java 固定容量のLimitedSet

固定容量のHashSetが欲しくて、ググったらjavaのライブラリには無いみたいで、ArrayListを継承したりして実装する例があったが、Iteratorとか全部Overrideするとめんどくさい。 個人的に欲しかった機能は、固定容量のSetがあって、容量が足りなくなった時に…

Android Studio 3.5 GitHubのリポジトリを変更する

作っているうちにアプリ名が変わったりして、GitHubのリポジトリ名を変えようと思ったら、 あれ?Android Studio側のリポジトリの参照ってどうやって変更するの? となった時のメモ。 git自体の知識がほぼ無いので、どういう事か説明できないのであしからず…

Android Studio 3.5 直列処理Executorのサンプル

Executorは別スレッドで非同期処理をいくつも実行するのに役立つ。 ThreadPoolExecutorを使うとスレッドを再利用しつつ非同期処理を連続して行える。 Executor executor = new ThreadPoolExecutor( corePoolSize, //スレッド数 maximumPoolSize, //最大スレ…

Android Studio 3.5 ApplicationクラスのライフサイクルとHandler#postの挙動

Applicationクラスのライフサイクルめも 経緯 new Handler().postってアプリを離れても動いてる!!!!???? Applicationクラスのライフサイクルメソッド public void onCreate() アプリケーション起動時 public void onTerminate() エミュレート環境で…

Android 暗号化アプリとアメリカ輸出規制

暗号化したろっ!⇒アメリカの輸出規制引っかかるけど、HTTPSとかみんな使ってるし既存技術ならOK?⇒EAR原文調査

Android Studio 3.5 マニフェストファイルの様々な設定値を参照する方法

プログラム上からAndroidManifest.xmlなどの設定値を参照する方法。 Activity activity = this; //例えばActivity内で実行した場合 Context context = activity; PackageManager packageManager = context.getPackageManager(); try { //アプリアイコン Draw…

Android 10 Q 対象範囲別ストレージ(Scoped Storage)とは

対象範囲別ストレージに関するAndroid Developersドキュメントの転載や解釈、および英語版ドキュメントの意訳。