未分類

Android - Intent を使って同一アプリ内の Activity を相互に扱う

準備

1. こちらを参照して、Test1Activity2 を追加します。

デザイン

1. main.xml にボタン (button1) を配置します。

サンプルコード (Java) - main アクティビティ

// import の追加
import android.content.Intent;
import android.view.*;
import android.widget.*;
import android.view.View.OnClickListener;

// コード
public class Test1Activity extends Activity implements OnClickListener  {
  /** Called when the activity is first created. */

  private Button b1;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    b1 = (Button)findViewById(R.id.button1);
    b1.setOnClickListener(this);
  }

  public void onClick(View view) {
    Intent intent = new Intent();
    intent.setClass(this, Test1Activity2.class);
    intent.putExtra("val1", 5);
    startActivityForResult(intent, 0);
  }

  protected void onActivityResult(int requestCode, int resultCode, Intent data ) {
    int val1 = data.getIntExtra("Ret", 0);
    Toast.makeText(this, String.valueOf(val1), Toast.LENGTH_LONG).show();
  }
}

サンプルコード (Java) - Test1Activity2 アクティビティ

// import の追加
import android.os.Bundle;
import android.widget.Button;
import android.widget.Toast;
import android.view.View;
import android.view.View.OnClickListener;

// コード
public class Test1Activity2 extends Activity implements OnClickListener {

  private Button b1;
  int val1;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.actvity2);

    Intent intent = getIntent();
    val1 = intent.getIntExtra("val1", 0);

    Toast.makeText(this, String.valueOf(val1), Toast.LENGTH_LONG).show();

    b1 = (Button)findViewById(R.id.button1);
    b1.setOnClickListener(this);
  }

  public void onClick(View view) {
    val1 = val1 * 10;
    Intent intent = new Intent();
    intent.putExtra("Ret", val1);
    setResult(Activity.RESULT_OK, intent);
    finish();
  }
}

解説

INTENT を使用して、main アクティビティから Test1Activity2 に数字を渡します。Test1Activity2 ではその数字を 10 倍して、main アクティビティに返します。

結果

-未分類