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

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

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

Android Studio 3.1
Android 8.1.0

 



グローバル変数

 

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
いきなり否定的なのですが、Singletonで作れるのであれば、あえてこのやり方をとることはないとは思います。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





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

尚、スクールがダメだと言う人がいますが、やる気があれば問題ありません。与えられるのを待っていてはいけないですね
欲しいものは取りに行くのです。


Google Pixel 3 XLグローバル版
SIMフリー 並行輸入品
6.3インチの大画面
背景をぼかすポートレートモード撮影


Anker PowerCore II Slim 10000
Power IQ 2.0搭載
iPhone & Android対応

シェアする

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

フォローする