2013年3月12日----Activity間転送データ

3206 ワード

異なるActivity間のデータ転送
別のActivityを呼び出しながらデータを渡すにはAndroidを利用する必要があります.os.Bundleオブジェクトはデータをカプセル化し、必要なデータまたはパラメータをBundleを介して異なるIntent間のデータを伝達します.データの再送にはonActivity Result()メソッドを書き換える必要があります.次に例を示します.
package com.example.test01;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {

	TextView textView01;
	Button button01;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		textView01 = (TextView)findViewById(R.id.textView01);
		button01 = (Button)findViewById(R.id.button01);
		
		button01.setOnClickListener(new View.OnClickListener()
		{
			public void onClick(View v) 
			{
				Intent intent = new Intent(getApplicationContext(), activity2.class);
				Bundle bundle = new Bundle();
				bundle.putBoolean("sex", true);
				intent.putExtras(bundle);
				startActivityForResult(intent, 0);
				
			}
		});
		
	}

	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		super.onActivityResult(requestCode, resultCode, data);
		
		switch (resultCode) {
			case RESULT_OK:
				Bundle bundle = data.getExtras();
				boolean sex = bundle.getBoolean("sex");
				textView01.setText(sex + "");
				break;
		}
		
	}
	
	
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}

 
 
package com.example.test01;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class activity2 extends Activity
{
	Button button;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		
		button = (Button)findViewById(R.id.button01);
		
		button.setOnClickListener(new OnClickListener()
		{
			public void onClick(View v) 
			{
				Intent intent = getIntent();
				Bundle bundle = intent.getExtras();
				
				String sx = " ";
				
				button.setText(sx + "");
				boolean sex = bundle.getBoolean("sex");
				if (sex) sx = " ";
				button.setText(sx + "");
				
				setResult(RESULT_OK , intent);
				finish();
			}
		});
		
	}
}