[Android] グローバル変数を使ってActivity間でデータを渡す

cat60 01 - [Android]  グローバル変数を使ってActivity間でデータを渡す

Activity間でデータを渡したいケースでIntentを使うケースを試しましたが、Global変数を使うという事もできます。

Android Studio 3.6.3
API 29



グローバル変数

 
いきなりですが、Singletonで作れるのであれば、あえてこのやり方をとることはないとは思います。

Note: There is normally no need to subclass Application. In most situations, static singletons can provide the same functionality in a more modular way.

Ref: Application | Android Developers

setter(),getter()など今では古いやり方も使いますし、こういうのもあると覚えておくと古いコードのメンテナンスに役立つかもしれません
 

 

android.app.Applicationを継承したクラス

 
Activityのライフサイクルとは別にApplication内でのデータ共有を行うためにandroid.app.Applicationがあります。
これを継承したクラスを作ってAndroidManifestに登録して、メソッドとしてsetter(), getter()を作成しておき、Activityから設定、読み出しを行います。
 
MyAppという名前でandroid.app.Applicationを継承したクラスを生成します。またデータの読み書きができるメソッドを作っておきます。
 
これから作っていく全体像としては、MainActivityとSubActivityから独立したクラスMyAppというものを設定して、そのプロパティとして例えばtestStringがあります。これに対してそれぞれのActivityからアクセスして読み書きをするわけです。
 
grobal param 01 - [Android]  グローバル変数を使ってActivity間でデータを渡す
 
MyApp.java

 

AndroidManifestへの登録

 
先に作成したクラスをandroid:nameに設定します。
追加で遷移先のSubActivityも使うので登録

AndroidManifest.xml

 

Activityからの呼び出し

 
グローバル変数への書き込みのメソッドができているので、アプリケーションクラスのインスタンスを生成してそのメソッドを呼びます。

ButtonのタップでEditTextで入力した文字列をグローバル変数として登録してSubActivityへ遷移。MainActivityからSubActivityへ遷移するところはIntentを使っています。

MainActivity.java

 
getApplication()を使ってMyAppインスタンスを生成して、そのグローバル変数の読み出しメソッドからテキストを読みだして表示します。

SubActivity.java

 
レイアウトファイルです。
activity_main.xml

 

activity_sub.xml

 
strings.xml

 
Android Studioのプロジェクトで作成あるいは変更したファイルです。
 
grobal param 02b - [Android]  グローバル変数を使ってActivity間でデータを渡す

 

サンプル動画

 

 
Actvityが複数あり、変数を共有したい場合には役立つかもしれませんが注意点もあります。

今更ですが可読性が落ちるとかバグの温床だとか悪者扱いされやすいのです。簡単なプロジェクトであればそれほどでもありませんが大規模なプロジェクトでは敬遠されます。

ということも心に留めておきましょう。
 
 
Reference:
Application | Android Developers

誤字脱字、意味不明で分からにゃイ、
などのご意見はこちらから mailフォーム

ブックマークしておくと便利です このエントリーをはてなブックマークに追加

 

アプリ開発が上達するお勧め

アプリ開発を始めたけどわからないところがあり、誰かに聞きたいけど周りにはそんな人はいない…あるいは、会社で働いていて日中そんなに時間をとれないなど、オンラインのプログラミングスクールがいいでしょう。

オンラインスクールは色々ありますが、以下の3つはAndroidが学習できる老舗スクールです。


TECH ACADEMY
Androidアプリコース


こういうものではアプリ作れないと言う意見もありますが、それは結局本人のやる気があるかないかです。やる気があっても独学では突破しにくいところは教えてもらうのが一番早い。


侍エンジニア塾
侍エンジニア塾 無料体験レッスン


とても簡単なことなのに本やネットの画像だけでは分かりにくいことはあります。実際に質問してピンポイントで教えてもらうと、なんだそんなこと、と言うのがけっこうあります。


CodeCamp
~約8,000名の受講生と80社以上の導入実績~
現役エンジニアのオンライン家庭教師CodeCamp




直接(ネットで)誰か分かる人に聞いた方が早く解決して、上達も早いと思います。


無料で転職まで
これはアプリ限定ではありませんが無料です
その代わり就職することを前提にしたスクールでエンジニアになって職を得たいのであれば手っ取り早いかもしれません




シェアする

  • このエントリーをはてなブックマークに追加

フォローする