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

Android7

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

 

 

Android Studio 2.2.2
Android 7.1.1

 


android.app.Application

 
Activityのライフサイクルとは別にApplication内でのデータ共有を行うためにandroid.app.Applicationがあります。
これを継承したクラスを作ってAndroidManifestに登録して、メソッドとしてsetter(), getter()を作成しておき、Activityから設定、読み出しを行います。
 

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

 
MyAppという名前でandroid.app.Applicationを継承したクラスを生成します。またデータの読み書きができるメソッドを作っておきます。
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

 
Actvityが複数あり、変数を共有したい場合には役立つでしょう