【Android】Intentを使った画面間の値の受け渡し
今回は画面間の値の受け渡しをまとめていきます。
画面遷移の方法は以前取り上げましたのでその続きと行きましょう!
xprogrammingx.hatenablog.com
遷移元から渡す値を設定する
遷移元から渡したい値を設定する時の処理を実装します。
[MainActivity.java]
@Override public void onClick(View v) { Intent subIntent = new Intent(getApplication(), SubActivity.class); // intの値を渡す subIntent.putExtra("KEY_INT", 3); // Stringの値を渡す subIntent.putExtra("KEY_STRING", "文字列型だよ"); // list<String>の値を渡す List<String> list = new ArrayList<>(); list.add("リスト1"); list.add("リスト2"); list.add("リスト3"); list.add("リスト4"); list.add("リスト5"); subIntent.putStringArrayListExtra("KEY_LIST", (ArrayList)list); startActivity(subIntent); }
作成したIntentクラスのインスタンスにputExtraメソッドを使って値を設定します。
第一引数が設定する値のキー値です。これは被らなければ好きな名前を付けてください。
第二引数には実際に渡す値です。型は任意ですが、Listは別メソッドが用意されているので注意です。
LIstを渡したいときは、putStringArrayListExtraやputIntegerArrayListExtraを使います。
遷移先での値の受け取り
設定した値を遷移先で取得します。
[SubActivity.java]
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_sub); Intent intent = getIntent(); // int型の値を受けとる intVal = intent.getIntExtra("KEY_INT",0); // String型の値を受けとる stringVal = intent.getStringExtra("KEY_STRING"); // List<String>型の値を受けとる stringList = intent.getStringArrayListExtra("KEY_LIST"); findViewById(R.id.button).setOnClickListener(this); }
遷移先で値を受け取る場合は、getIntentメソッドで取得したインスタンスの
getXXXExtraを使用します。
設定する際はputExtraでほとんどの型を使えていましたが、
受け取る場合は型ごとにメソッドが違うので注意です。
どのメソッドも第一引数にキー値を設定することで値を受け取れます。
nullを許容していない型(intやdouble、booleanなど)の場合は、
第二引数にデフォルト値を設定します。
受け取った値を標準出力してみると、受け渡しが行えていることが分かります。
2020-03-23 13:12:26.517 4526-4526/com.example.test I/System.out: 遷移先で受け取った値 2020-03-23 13:12:26.517 4526-4526/com.example.test I/System.out: valは3 2020-03-23 13:12:26.517 4526-4526/com.example.test I/System.out: stringValは文字列型だよ 2020-03-23 13:12:26.517 4526-4526/com.example.test I/System.out: stringListの1番目はリスト1 2020-03-23 13:12:26.517 4526-4526/com.example.test I/System.out: stringListの2番目はリスト2 2020-03-23 13:12:26.518 4526-4526/com.example.test I/System.out: stringListの3番目はリスト3 2020-03-23 13:12:26.518 4526-4526/com.example.test I/System.out: stringListの4番目はリスト4 2020-03-23 13:12:26.519 4526-4526/com.example.test I/System.out: stringListの5番目はリスト5
それでは今回はここまでです!
お疲れさまでした(^_^)/
最後にアプリの宣伝させてください(*^-^*)