LoginSignup
0
4

More than 5 years have passed since last update.

明示的Intent(値をやり取りする場合)

Posted at

Activity間で、計算結果や入力値など何らかの値をやり取りしたい場合がある。
そのような場合は、Intentを使って値のやり取りができる。

Intentとは

Activityから他のActivityを呼び出したい場合、「android.content.Intent」というクラスを使う。
Intentクラスは、以下2点を格納する入れ物のようなものである。
1.呼び出しActivityを決める情報
2.呼び出しActivityに渡したい情報

Intentを用いたActivityの呼び出し

Intentに必要な情報を設定し、startActivityメソッドに引数として渡すと、指定されたActivityが呼び出される。

次のコードでは、ボタンをクリックしたときにIntentに呼び出したいActivityである
SubActivityのクラスを設定し、startActivityメソッドでActivityを呼び出している。

        Button button = (Button)findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //setOnClickListenerのコンストラクタ内でthisを指定すると
                //setOnClickListenerのインスタンスをさしてしまうので、
                //MainActivity.thisとする。
                Intent intent = new Intent(MainActivity.this,SubActivity.class);

                startActivity(intent);

Activity間での値のやり取り

Activity間で値をやり取りするには、呼び出し元ActivityでIntentに値を設定し、
呼び出し先ActivityでIntentから値を取得すればいい。
Intentに値を設定するにはputExtraメソッド、Intentから値を取得するにはgetStringExtraメソッドを使う。

次のコードは、呼び出し元Activityのコードで、
ボタンがクリックされた時に、Intentに呼び出し先Activityと渡したい値を設定している。
この例では、キーと文字列の組をIntentに設定している。

        Button button = (Button)findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                EditText editText =(EditText)findViewById(R.id.editText);
                String textString = editText.getText().toString();

                Intent intent = new Intent(MainActivity.this,SubActivity.class);
                intent.putExtra(KEY,textString);

                startActivityForResult(intent,SUB_ACTIVITY_REQUEST);

次のコードは、呼び出し先Activityのコードで、
呼び出し元で設定されたキーに対応する文字列を取得し、画面に表示する。

        Intent intent = getIntent();
        String str = intent.getStringExtra(MainActivity.KEY);

        editText.setText(str);
        TextView textView = (TextView)findViewById(R.id.subTextView);
        textView.setText("こんにちは!"+str+"さん");

Githubリンク

リポジトリ:https://github.com/tagfa/MyExplicitIntentActivity02

0
4
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
4