0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Activity, Fragment, RecyclerView について、とりあえずメモ

Posted at

Activity, Fragment, RecyclerView

について、とりあえずメモ


🌒️ 序

Android app 作る tutorial とか見ると、まずは、2つ程度の activity を用意して、その間で画面遷移するサンプルコードが出てくる。でもこれ、割と過去の遺物らしい。今(といってももう6年ほど前から)は single activity とか言って、activity をたくさん作らないようにしようよ、って流れができているみたい。

なんで?っていうと、初心者が最初に躓くのが、 activity 間を結びつけるコードを書くのが難しいから。実際これはかなり綱渡りなコードになる。

  1. Android app には main() みたいな唯一の起動ポイントが無く、どの activity から起動しても良い
  2. OS は、メモリ逼迫などの必要に応じていつでも、任意の activity を消せる
  3. したがって画面を呼び出したとき、既存のものを再利用する場合と新規起動する場合とがある

このあたりの仕様により、activity の instance をどこかで静的に保持することができず、this 渡してコールバックさせればいいじゃん、みたいなコードを書くと IDE に怒られる。

どうやら私が初心者だから難しいと思っていたのではなく、みんなが難しいと思っていたみたいで、流れが single activity とか navigation とかいう方向に行っているようだ。でもそういう新しい流れに沿ったコードが tutorial とか初心者向けサンプルコードには出てこないのが壁になっている。


🌕️ 破

伝統的な multi activity

サンプルコードやテンプレートはだいたいこれ。

簡単に見えるけど、 Activity 間のやりとりが割とハマりどころ。

navigation に任せる

Application と Activity の間に、Navigation という層を入れて、そこに連携を任せる方法。Interface とか Kotlin Object とかを経由すると連携できるっていう解決策を Framework として提供してきた感じか。

single activity なら連携が発生しない?

複数作るから連携が難しいんだ。。。という、そもそもな発想転換。画面を切り替えるのではなく、Factory パターンで中身を入れ替えていく。

RecyclerView で list の item 表示の view を動的に作る

Fragment で、画面を入れ替える

一覧画面で List のどれかをタップしたときに Item の詳細画面を出す、とかを典型的なサンプルだと2つの Activity を使う。これを1つの Activity で実現するために、一覧画面と詳細画面を動的に入れ替える。これが Fragment だ。

かなりすっきりしたように見えるものの、これでも実は、 Item, Position みたいな情報を MainActivity に引き渡すところで下手をすると闇に落ちる。

やってないので想像だが、そこの部分まですっきりさせたければ、さらに Navigation とかを投入するのか。。。

🌖️ 急

参考資料

Navigation

Navigation | App architecture | Android Developers

[Android] Navigationの基礎の基礎 - Qiita

RecyclerView

Create dynamic lists with RecyclerView | Views | Android Developers

【Android】世界一わかりやすいRecyclerViewの実装

android Kotlin RecyclerViewの使い方 - Qiita

Simple Android RecyclerView example

Fragment

Fragments | App architecture | Android Developers

Single activity: Why, when, and how (Android Dev Summit '18)

Fragments: Past, present, and future (Android Dev Summit '19)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?