ISBN: 978-4-7981-7613-0
基礎&応用力をしっかり育成!Androidアプリ開発の教科書 第3版 Kotlin対応
| 著者 | WINGSプロジェクト 齊藤 新三 |
|---|---|
| 監修 | 山田祥寛 |
| 出版社 | 翔泳社 |
| 価格 | 2,850円(税別) |
| 判型 | B5変判・2色 |
| ページ数 | 472ページ |
| 発売日 | 2023年1月24日 |
| 対象レベル | 初中級 |
2023/05/11、Android Studio Flamingoによるサンプルへの影響について、PDFへまとめてサンプルに同梱しました。
「Androidアプリ開発の基礎力」を習得しよう
本書は、Kotlin言語の学習者を対象として、ハンズオン形式でサンプルプログラムを作りながら、Androidアプリ開発に必要な基礎知識やSDKの機能、プログラミングテクニックを学ぶことができる書籍です。最新の開発環境Android Studio Dolphin(2021.3.1)を利用します。
同シリーズ「基礎&応用力をしっかり育成!Androidアプリ開発の教科書 第3版 Java対応」と同じ構成でKotlinに対応させているため、KotlinとJavaを読み比べながら学んでいくことも可能です。
更新履歴
- FAQ情報:2023年5月11日 更新
- 正誤訂正:2025年4月5日 更新
目次
- 第1章 Androidアプリ開発環境の作成
- 1.1 Androidのキソ知識
- 1.1.1 Androidの構造
- 1.1.2 Android Studio
- 1.1.3 Kotlin言語の正式サポート
- 1.2 Android Studioのインストール
- 1.2.1 Windowsの場合
- 1.2.2 macOSの場合
- 1.2.3 Android Studioの初期設定を行う
- 1.2.4 アップデートを確認
- 1.2.5 追加のSDKをダウンロード
- 第2章 はじめてのAndroidアプリ作成
- 2.1 はじめてのAndroidプロジェクト
- 2.1.1 Android StudioのHelloAndroidプロジェクトを作成する
- 2.1.2 Android Studioプロジェクトの作成はウィザードを使う
- 2.1.3 プロジェクト作成情報
- 2.2 AVDの準備
- 2.2.1 AVD を作成する
- 2.2.2 AVD を起動して初期設定を行う
- 2.3 アプリの起動
- 2.3.1 アプリを起動する
- 2.4 Android Studioの画面構成とプロジェクトのファイル構成
- 2.4.1 Android Studioの画面構成とProjectツールウィンドウのビュー
- 2.4.2 Androidビューのファイル構成
- 2.4.3 異なる画面密度に自動対応するための修飾子
- 2.5 Androidアプリ開発の基本手順
- 2.5.1 レイアウトファイルとアクティビティ
- 2.5.2 strings.xmlの働き
- 2.5.3 Androidアプリ開発手順にはパターンがある
- 第3章 ビューとアクティビティ
- 3.1 ビューの基礎知識
- 3.1.1 ラベルを画面に配置する
- 3.1.2 レイアウトファイルを編集する「レイアウトエディタ」
- 3.1.3 画面部品の配置を決めるビューグループ
- 3.1.4 画面部品そのものであるビュー
- 3.1.5 画面構成はタグの組み合わせ
- 3.1.6 画面部品でよく使われる属性
- 3.2 画面部品をもう1つ追加する
- 3.2.1 入力欄を画面に配置する
- 3.2.2 アプリを手軽に再実行する機能
- 3.2.3 入力欄の種類を設定する属性
- 3.3 レイアウトエディタのデザインモード
- 3.3.1 デザインモードでの画面各領域の名称
- 3.3.2 デザインモードのツールバー
- 3.4 デザインモードで部品を追加してみる
- 3.4.1 デザインモードでの画面作成手順
- 3.4.2 デザインモードでボタンを画面に配置する
- 3.4.3 XMLがどうなったか確認してみる
- 3.5 LinearLayoutで部品を整列する
- 3.5.1 LinearLayoutを入れ子に配置する
- 3.5.2 レイアウト部品を入れ子にした場合の画面構成
- 3.6 他のビュー部品──ラジオボタン/選択ボックス/リスト
- 3.6.1 単一選択ボタンを設置する──ラジオボタン
- 3.6.2 複数のRadioButtonはRadioGroupで囲む
- 3.6.3 選択ボックスを設置する──Spinner
- 3.6.4 リストデータはstring-arrayタグで記述する
- 3.6.5 リストを表示する──ListView
- 3.6.6 余白を割り当てるlayout_weight属性
- 3.6.7 一定の高さの中でリストデータを表示するListView
- 第4章 イベントとリスナ
- 4.1 アプリ起動時に実行されるメソッド
- 4.1.1 画面を作成する
- 4.1.2 アクティビティのソースコードを確認する
- 4.1.3 リソースを管理してくれるRクラス
- 4.2 イベントリスナ
- 4.2.1 イベントとイベントハンドラとリスナ
- 4.2.2 Androidでリスナを設定する手順
- 4.2.3 リスナクラスを作成する
- 4.2.4 リスナクラスは専用のインターフェースを実装する
- 4.2.5 イベントハンドラメソッドに処理を記述する
- 4.2.6 アクティビティ内で画面部品を取得する処理
- 4.2.7 入力文字列の取得と表示
- 4.2.8 リスナを設定する
- 4.2.9 リスナインターフェースに対応したリスナ設定メソッド
- 4.3 ボタンをもう1つ追加してみる
- 4.3.1 文字列とボタンを追加する
- 4.3.2 追加されたボタンの処理を記述する
- 4.3.3 idで処理を分岐
- 第5章 リストビューとダイアログ
- 5.1 リストタップのイベントリスナ
- 5.1.1 画面を作成する
- 5.1.2 リストをタップしたときの処理を記述する
- 5.1.3 リストビュータップのリスナはOnItemClickListenerインターフェースを実装する
- 5.1.4 お手軽にメッセージを表示できるトースト
- 5.1.5 リストビュータップのリスナはonItemClickListenerプロパティに代入
- 5.2 アクティビティ中でリストデータを生成する
- 5.2.1 アクティビティ中でリストを生成するサンプルアプリを作成する
- 5.2.2 リストビューとリストデータを結びつけるアダプタクラス
- 5.3 ダイアログを表示する
- 5.3.1 ダイアログを表示させる処理を記述する
- 5.3.2 Androidのダイアログの構成
- 5.3.3 ダイアログを表示するにはDialogFragmentを継承したクラスを作成する
- 5.3.4 ダイアログオブジェクトの生成処理はビルダーを利用する
- 5.3.5 ダイアログのボタンタップはwhichで分岐する
- 第6章 ConstraintLayout
- 6.1 ConstraintLayout
- 6.1.1 Android Studioのデフォルトレイアウト
- 6.1.2 ConstraintLayoutの特徴
- 6.2 制約の設定には制約ハンドルを使う
- 6.2.1 TextViewが1つだけの画面を作成する
- 6.2.2 設定された制約の確認
- 6.3 ConstraintLayoutにおける3種類のlayout_width/height
- 6.3.1 「名前」のラベルと入力欄を追加する
- 6.3.2 ConstraintLayoutでは独特のlayout_width/height
- 6.3.3 残りの部品を追加する
- 6.4 横並びとベースライン
- 6.4.1 横並びに変更も簡単
- 6.4.2 ベースラインを揃える
- 6.5 ガイドラインを利用する
- 6.5.1 「名前」入力欄と「メールアドレス」入力欄の左端を揃える
- 6.5.2 制約の設定先として利用できるガイドライン
- 6.6 チェイン機能を使ってみる
- 6.6.1 ボタンを3つ均等配置する
- 6.6.2 複数の画面部品をグループ化できるチェイン機能
- 第7章 画面遷移とIntentクラス
- 7.1 2行のリストとSimpleAdapter
- 7.1.1 定食メニューリスト画面を作成する
- 7.1.2 柔軟なリストビューが作れるアダプタクラスSimpleAdapter
- 7.1.3 データと画面部品を結びつけるfrom-to
- 7.2 Androidの画面遷移
- 7.2.1 画面遷移のコードと新画面のコードを記述する
- 7.2.2 画面を追加する3種の作業
- 7.2.3 Androidの画面遷移は遷移ではない
- 7.2.4 アクティビティの起動とインテント
- 7.2.5 引き継ぎデータを受け取るのもインテント
- 7.2.6 Intentの引き継ぎデータはBundleに格納されている
- 7.2.7 タップ処理をメソッドで記述できるonClick属性
- 7.2.8 戻るボタンの処理はアクティビティの終了
- 7.3 アクティビティのライフサイクル
- 7.3.1 アクティビティのライフサイクルとは何か
- 7.3.2 ライフサイクルをアプリで体感する
- 7.3.3 AndroidのログレベルとLogクラス
- 7.3.4 ログの確認はLogcatで行う
- 7.3.5 ライフサイクルコールバックをログで確認する
- 第8章 オプションメニューとコンテキストメニュー
- 8.1 リストビューのカスタマイズ
- 8.1.1 IntentSampleアプリと同じ部分を作成する
- 8.1.2 リストビュー各行のカスタマイズはレイアウトファイルを用意するだけ
- 8.2 オプションメニュー
- 8.2.1 オプションメニューの例
- 8.2.2 オプションメニュー表示を実装する
- 8.2.3 オプションメニュー表示はXMLとアクティビティに記述する
- 8.2.4 オプションメニュー選択時処理を実装する
- 8.2.5 オプションメニュー選択時の処理はIDで分岐する
- 8.3 戻るメニュー
- 8.3.1 戻るメニューを実装する
- 8.3.2 戻るメニュー表示はonCreate()に記述する
- 8.4 コンテキストメニュー
- 8.4.1 コンテキストメニューを実装する
- 8.4.2 コンテキストメニューの作り方はオプションメニューとほぼ同じ
- 8.4.3 コンテキストメニュー選択時の処理を実装する
- 8.4.4 コンテキストメニューでも処理の分岐はidのR値とwhen文
- 第9章 フラグメント
- 9.1 フラグメント
- 9.1.1 前章までのサンプルをタブレットで使うと
- 9.1.2 フラグメントによる画面構成
- 9.2 スマホサイズのメニューリスト画面のフラグメント化
- 9.2.1 メニューリスト画面をフラグメントで実現する
- 9.2.2 フラグメントはアクティビティ同様にXMLとKotlinクラス
- 9.2.3 表示画面の指定はコンストラクタを利用
- 9.2.4 フラグメントのライフサイクル
- 9.2.5 onViewCreated()の記述方法
- 9.2.6 フラグメントでのコンテキストの扱い
- 9.2.7 フラグメントのアクティビティへの埋め込み
- 9.3 スマホサイズの注文完了画面のフラグメント化
- 9.3.1 注文完了画面をフラグメントで実現する
- 9.3.2 フラグメントを利用した画面遷移
- 9.3.3 フラグメントを利用した遷移のキモはFragmentManager
- 9.3.4 フラグメントトランザクション
- 9.3.5 フラグメント間のデータ引き継ぎはBundle
- 9.3.6 バックスタックへの追加
- 9.3.7 バックスタックからポップ
- 9.4 タブレットサイズ画面を作成する
- 9.4.1 メニューリスト画面を10インチに対応する
- 9.4.2 画面サイズごとに自動でレイアウトファイルを切り替えてくれるlayout-##
- 9.4.3 10インチの画面構成
- 9.5 タブレットに対応した処理コードの記述
- 9.5.1 スマホサイズとタブレットサイズの処理の違い
- 9.5.2 フラグメント内のコードをタブレットに対応させる
- 9.5.3 処理分岐はフラグメントコンテナの有無がキモ
- 9.5.4 タブレットサイズでの注文完了表示もreplace()
- 9.5.5 タブレットサイズでの戻るボタンは自分自身の削除
- 第10章 データベースアクセス
- 10.1 Androidのデータ保存
- 10.2 Androidのデータベース利用手順
- 10.2.1 カクテルのメモアプリを作成する
- 10.2.2 Androidのデータベースの核となるヘルパークラス
- 10.2.3 データベース処理を追加する
- 10.2.4 データベースヘルパークラスの作り方
- 10.2.5 ヘルパーオブジェクトの生成、解放処理
- 10.2.6 データ更新処理
- 10.2.7 データ取得処理
- 第11章 非同期処理とWeb API連携
- 11.1 AndroidのWeb連携
- 11.1.1 AndroidのWeb連携の仕組み
- 11.1.2 OpenWeatherの利用準備
- 11.1.3 OpenWeatherのWeb API仕様
- 11.2 非同期処理
- 11.2.1 Java言語のメソッド連携は同期処理
- 11.2.2 非同期処理の必要性
- 11.3 サンプルアプリの基本部分の作成
- 11.3.1 お天気情報アプリを作成する
- 11.3.2 リスト11.2のポイント
- 11.4 Androidの非同期処理
- 11.4.1 非同期処理の基本コードを記述する
- 11.4.2 非同期処理の中心であるExecutor
- 11.4.3 非同期処理の実態はrun()かcall()メソッド内の処理
- 11.4.4 Callableではcall()の戻り値の型を指定
- 11.4.5 Callableを実行したsubmitの戻り値はFutureオブジェクト
- 11.4.6 アノテーションの追記
- 11.4.7 UIスレッドとワーカースレッドを保証してくれるアノテーション
- 11.5 HTTP接続
- 11.5.1 天気情報の取得処理を記述する
- 11.5.2 Androidのインターネット接続はHTTP接続
- 11.5.3 HTTP接続の許可
- 11.5.4 HttpURLConnectionクラスのその他のプロパティ
- 11.6 JSONデータの扱い
- 11.6.1 JSONデータの解析処理の追記
- 11.6.2 JSON解析の最終目標はgetString()
- 11.7 ワーカースレッドからの通知
- 11.7.1 ワーカースレッドからUIスレッドに通知を行うHandler
- 11.7.2 サンプルプロジェクトの作成
- 11.7.3 Handlerを利用したコードを追記する
- 11.7.4 スレッド間通信を行うにはHandlerのpost()メソッドを利用
- 11.7.5 Handlerオブジェクトの用意にはLooperが必要
- 11.7.6 JSON処理に関するコードを追記する
- 11.7.7 HandlerとCallableの相性は悪い
- 11.8 Kotlinコルーチンによる非同期処理
- 11.8.1 コルーチンとは
- 11.8.2 コルーチンとコルーチンスコープ
- 11.8.3 サンプルプロジェクトの作成
- 11.8.4 weatherInfoBackgroundRunner()メソッドのポイント
- 11.8.5 コルーチンに関するコードを記述する
- 11.8.6 Kotlinコルーチンには追加ライブラリが必要
- 11.8.7 ライフサイクルと一致したコルーチンスコープ
- 11.8.8 処理を中断させるにはsuspendを記述する
- 11.8.9 メソッド内の処理スレッドを分けるwithContext()関数
- 11.8.10 suspendの真の意味
- 11.8.11 Kotlinコルーチンのコードパターン
- 第12章 メディア再生
- 12.1 音声ファイルの再生
- 12.1.1 メディア再生アプリを作成する
- 12.1.2 メディア再生のコードを記述する
- 12.1.3 音声ファイルの再生はMediaPlayerクラスを使う
- 12.1.4 メディアの再生と一時停止
- 12.1.5 MediaPlayerの破棄
- 12.1.6 MediaPlayerの状態遷移
- 12.2 戻る・進むボタン
- 12.2.1 戻る・進む処理のコードを記述する
- 12.2.2 再生位置を指定できるseekTo()
- 12.3 リピート再生
- 12.3.1 リピート再生のコードを記述する
- 12.3.2 スイッチ変更検出用リスナはOnCheckedChangeListenerインターフェース
- 12.3.3 メディアのループ設定はisLoopingプロパティ
- 第13章 バックグラウンド処理と通知機能
- 13.1 サービス
- 13.1.1 サービスサンプルアプリを作成する
- 13.1.2 サービスに関するコードを記述する
- 13.1.3 サービスはServiceクラスを継承したクラスとして作成
- 13.1.4 サービスのライフサイクル
- 13.2 通知
- 13.2.1 通知とは
- 13.2.2 通知を実装する
- 13.2.3 通知を扱うにはまずチャネルを生成する
- 13.2.4 通知を出すにはビルダーとマネージャーが必要
- 13.3 通知からアクティビティを起動する
- 13.3.1 通知からアクティビティを起動する処理を実装する
- 13.3.2 通知からアクティビティの起動はPendingIntentを使う
- 13.3.3 通知と連携させるためにサービスをフォアグラウンドで実行する
- 第14章 地図アプリとの連携と位置情報機能の利用
- 14.1 暗黙的インテント
- 14.1.1 2種のインテント
- 14.1.2 暗黙的インテントサンプルアプリを作成する
- 14.1.3 地図アプリとの連携に関するコードを記述する
- 14.1.4 暗黙的インテントの利用はアクションとURI
- 14.2 緯度と経度の指定で地図アプリを起動するURI
- 14.2.1 緯度と経度で地図アプリと連携するコードを記述する
- 14.3 位置情報機能の利用
- 14.3.1 位置情報取得のライブラリ
- 14.3.2 FusedLocationProviderClientの利用準備
- 14.3.3 位置情報機能利用コードの追記
- 14.3.4 位置情報利用の中心はFusedLocationProviderClient
- 14.3.5 第2引数のコールバッククラスの作り方
- 14.3.6 第3引数はコールバック処理を実行させるスレッドのLooperオブジェクト
- 14.3.7 第1引数は位置情報更新に関する設定を表すLocationRequestオブジェクト
- 14.4 位置情報利用の許可設定
- 14.4.1 位置情報機能利用の許可とパーミッションチェックのコードを記述する
- 14.4.2 アプリの許可はパーミッションチェックが必要
- 14.4.3 パーミッションダイアログに対する処理はonRequestPermissionsResult()メソッド
- 第15章 カメラアプリとの連携
- 15.1 カメラ機能の利用
- 15.1.1 カメラ機能を利用する2種類の方法
- 15.1.2 カメラ連携サンプルアプリを作成する
- 15.1.3 カメラアプリを起動する暗黙的インテント
- 15.1.4 アプリに戻ってきたときに処理をさせる
- 15.2 ストレージ経由での連携
- 15.2.1 ストレージ経由でカメラアプリと連携するように改造する
- 15.2.2 Androidストレージ内部のファイルはURIで指定する
- 15.2.3 URI指定でカメラを起動する
- 第16章 マテリアルデザイン
- 16.1 マテリアルデザイン
- 16.1.1 マテリアルデザインとは
- 16.1.2 Androidのマテリアルデザイン
- 16.1.3 Androidのマテリアルテーマの確認
- 16.1.4 マテリアルデザインの4色
- 16.2 ScrollView
- 16.2.1 ツールバーサンプルアプリを作成する
- 16.2.2 画面をスクロールさせたい場合にはScrollViewを使う
- 16.3 アクションバーより柔軟なツールバー
- 16.3.1 ツールバーを導入する
- 16.3.2 ツールバーを使うにはアクションバーを非表示に
- 16.3.3 テーマの設定値の適用は?attr/で
- 16.3.4 ツールバーの各種設定はアクティビティに記述する
- 16.4 ツールバーのスクロール連動
- 16.4.1 スクロール連動サンプルアプリを作成する
- 16.4.2 スクロール連動のキモはCoordinatorLayout
- 16.4.3 アクションバー部分を連動させるAppBarLayout
- 16.4.4 CoordinatorLayout配下でスクロールするにはNestedScrollViewを使う
- 16.4.5 enterAlwaysモードでのスクロール連動のまとめ
- 16.5 CollapsingToolbarLayoutの導入
- 16.5.1 CollapsingToolbarLayoutを導入する
- 16.5.2 AppBarLayoutのサイズを変更するにはCollapsingToolbarLayoutを使う
- 16.6 CollapsingToolbarLayoutにタイトルを設定する
- 16.6.1 CollapsingToolbarLayoutにタイトルを設定する
- 16.6.2 CollapsingToolbarLayoutは通常サイズと縮小サイズで文字色を変えられる
- 16.7 FloatingActionButton(FAB)
- 16.7.1 FABを追加する
- 16.7.2 FABは浮いたボタン
- 16.8 Scrolling Activity
- 第17章 リサイクラービュー
- 17.1 リストビューの限界
- 17.2 リサイクラービューの使い方
- 17.2.1 リサイクラービューサンプルアプリを作成する
- 17.2.2 リサイクラービューに関するソースコードを記述する
- 17.2.3 リサイクラービューにはレイアウトマネージャーとアダプタが必要
- 17.2.4 リストデータの見え方を決めるレイアウトマネージャー
- 17.2.5 リサイクラービューのアダプタは自作する
- 17.2.6 ビューホルダはアイテムのレイアウトに合わせて作成する
- 17.2.7 アダプタにはアイテムの生成とデータ割り当て処理を記述する
- 17.3 区切り線とリスナ設定
- 17.3.1 区切り線とリスナ設定のコードを記述する
- 17.3.2 区切り線は手動で設定する
- 17.3.3 リスナはインフレートした画面部品に対して設定する
- Note
- Android Studioの動作環境
- 漢字表記のユーザー名に注意
- HAXMのインストール
- Android Studioの日本語化
- Javaクラスの一意性
- AVDのツールバーとジェスチャーナビゲーション
- AVDの終了
- Androidビューのファイル構成にならない場合
- プロジェクトの閉じ方
- プロジェクトの削除
- 単位
- 警告について
- 左右余白について
- オーバーライド
- AppCompatActivityクラス
- Android Studioでクラスのインポートを行う
- リスナインターフェース
- インナークラスとオブジェクト式
- onItemClick()の第2引数viewの利用例
- コンテキスト
- プロパティのセッタか通常のメソッドか
- AndroidXライブラリのDialogFragment
- AlertDialogのインポート
- etCommentのテキスト位置
- データを加工しながらListViewを生成するには
- 警告について
- Intentのコンストラクタ引数
- apply関数
- ログレベル
- xmlns:app属性のインポート
- app:showAsActionとandroid:showAsAction
- メニューの入れ子
- トランザクション
- DialogFragmentはフラグメント
- フラグメントでオプションメニューを使うには
- 開発中はアプリをアンインストールする
- Android内データベースの主キーは_id
- 非同期でデータベース接続オブジェクトの取得
- rawQuery()でバインド変数を使う方法
- SQL文を使わない方法
- Room
- UIスレッドとワーカースレッド
- AsyncTask
- HTTP接続がPOSTの場合
- スレッドセーフ
- ViewModel
- WebView
- 音声ファイルはなぜURI指定か?
- onPrepared()とonCompletion()の引数
- 通知設定
- PagingIntentとバックスタック
- URLエンコーディング
- カメラアプリの起動
- リスト15.3でコンパイルエラー
- アプリのテーマ指定
- elevationの値
- アクションバーサイズのアプリバーのサブタイトルは非推奨
- コラム
- Android Studioの設定ファイルの格納先
- ソフトウェアキーボードの選択
- ビルド失敗とBuildツールウィンドウ
- Welcome画面でのアップデートの表示
- Structureツールウィンドウ
- プロジェクトのzipファイルを作成する
- Android公式ドキュメント
- タイムゾーンの設定
正誤表
| 該当頁 | 該当箇所 | 修正刷 |
|---|---|---|
| 訂正箇所 | 訂正事項 | 更新日 |
| p.33 | 表2.1 Phone and Tableのテンプレート 上から4つ目 | 2刷 |
| Button Navigation Activity | Bottom Navigation Activity | 2023/04/28 |
| p.179 | Buttonの配置表内のtext属性 | 2刷 |
| bt_next | @string/bt_next | 2023/10/24 |
| p.180 | Buttonの配置表内のtext属性 | 2刷 |
| bt_previous | @string/bt_previous | 2023/10/24 |
| p.238 | 手順[5] 本文1行目 | 2刷 |
| 手順2と同様に、 | 手順4と同様に、 | 2024/01/18 |
| p.242 | 図9.23 矢印の根元部分 | - |
| id が fragmentMainContainer | id が fragmentListContainer | 2025/04/05 |
| p.278 | リスト11.2 下から2行目 | 2刷 |
| // アクセスすするための | // アクセスするための | 2024/01/18 |
| p.289 | リスト11.7 | 2刷 |
| val reader = BufferedReader(InputStreamReader(stream, StandardChatsets.UTF_8)) | val reader = BufferedReader(InputStreamReader(stream, StandardCharsets.UTF_8)) | 2023/07/15 |
| p.308 | 11.8.2項 本文 1行目 | 2刷 |
| 図11.13では | 図11.19では | 2023/07/09 |
| p.310 | [6]の見出し | 2刷 |
| JSON解析コードが記述されたweatherInfoPostRunner()メソッドを追記する | JSON解析コードが記述されたshowWeatherInfo()メソッドを追記する | 2023/07/09 |
| p.315 | 11.8.9項 本文1行目 | 2刷 |
| 図11.13を見てください | 図11.19を見てください | 2023/07/09 |
FAQ
本書サンプルへの影響について、配布サンプルの「はじめにお読みください.pdf」にまとめておりますので、ご覧ください。
主な変更点は以下の通りです。
・テンプレートの変更
Empty Activity → Empty Views Activity
・デフォルトのテーマが NoActionBar に変更
伴い8.2 節「オプションメニュー」のサンプルを動作させるためには、テーマの変更が必要
・ マテリアル 3 の採用
16.1 節は、マテリアル 2 を前提に解説しています
・R 値判定の switch 利用不可
switch の利用ができなくなったので、代わりに if を利用
主な変更点は以下の通りです。
・テンプレートの変更
Empty Activity → Empty Views Activity
・デフォルトのテーマが NoActionBar に変更
伴い8.2 節「オプションメニュー」のサンプルを動作させるためには、テーマの変更が必要
・ マテリアル 3 の採用
16.1 節は、マテリアル 2 を前提に解説しています
・R 値判定の switch 利用不可
switch の利用ができなくなったので、代わりに if を利用
更新日: 2023.05.11
ダウンロード
お問い合わせ
書籍に関するご質問や誤りのご報告、ご意見・ご感想などをお寄せください。
お問い合わせの前にFAQ・正誤表をご確認ください。すでに掲載済みの内容については個別回答が難しい場合があります。