startActivityForResult浅入理解

本文介绍了一个简单的示例,展示了如何在两个Activity之间进行数据传递。通过MainActivity启动TwoActivity,并在TwoActivity中处理Intent,最终将数据返回给MainActivity并更新UI。

对startActivityForResult理解,通过简单例子有了浅的理解,通过他可以实现两个activity之间相互传递数据。

    MainActivity和TwoActivity之间传递数据,并修改UI,在TwoActivity中使用handler处理Intent,在MainActivity中onActivityResult中修改UI界面,这样可以实现,

public class MainActivity extends Activity {

	private TextView tv_text;
	private Button bt_change;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		tv_text = (TextView) findViewById(R.id.tv_text);
		bt_change = (Button) findViewById(R.id.bt_change);
		
		bt_change.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				Intent intent = new Intent(getApplicationContext(), TwoActivity.class);
				startActivityForResult(intent, 0);
			}
		});
		
	}
	
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		// TODO Auto-generated method stub
		super.onActivityResult(requestCode, resultCode, data);
		
		Bundle extras = data.getExtras();
		String string = extras.getString("value");
		System.out.println("接收到:"+string);
		
		tv_text.setText(string);
		bt_change.setVisibility(View.GONE);
	}
}

public class TwoActivity extends Activity {
	private MainHandler handler;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_two);
		Button bt_send = (Button) findViewById(R.id.bt_send);
		
		handler = new MainHandler();
		
		onClick(bt_send);
	}
	
	
	class MainHandler extends Handler{
		@Override
		public void handleMessage(Message msg) {
			// TODO Auto-generated method stub
			super.handleMessage(msg);
			switch (msg.what) {
			case 0:
				Intent intent = getIntent();
				Bundle bundle = new Bundle();
				bundle.putString("value", "我来了");
				Intent extras = intent.putExtras(bundle);
				TwoActivity.this.setResult(0, extras);
				TwoActivity.this.finish();
				break;

			default:
				break;
			}
			
		}
	}

	private void onClick(Button bt_send) {
		bt_send.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				handler.sendEmptyMessageDelayed(0, 1000);
			}
		});
	}
}

在TwoActivity中通过getIntent()方法获取上一个activity传过来的intent,在这个intent设置数据,在setResult()方法中加入数据,这样就可以在onActivityResult()中接收数据了。

以上只是我这个菜鸟平时学习的一些总结,若是有不对的地方和不足之处请多多指教。

乐播投屏是一款简单好用、功能强大的专业投屏软件,支持手机投屏电视、手机投电脑、电脑投电视等多种投屏方式。 多端兼容与跨网投屏:支持手机、平板、电脑等多种设备之间的自由组合投屏,且无需连接 WiFi,通过跨屏技术打破网络限制,扫一扫即可投屏。 广泛的应用支持:支持 10000+APP 投屏,包括综合视频、网盘与浏览器、美韩剧、斗鱼、虎牙等直播平台,还能将央视、湖南卫视等各大卫视的直播内容一键投屏。 高清流畅投屏体验:腾讯独家智能音画调校技术,支持 4K 高清画质、240Hz 超高帧率,低延迟不顿,能为用户提供更高清、流畅的视觉享受。 会议办公功能强大:拥有全球唯一的 “超级投屏空间”,扫码即投,无需安装。支持多人共享投屏、远程协作批注,PPT、Excel、视频等文件都能流畅展示,还具备企业级安全加密,保障会议资料不泄露。 多人互动功能:支持多人投屏,邀请好友加投屏互动,远程也可加。同时具备一屏多显、语音互动功能,支持多人连麦,实时语音交流。 文件支持全面:支持 PPT、PDF、Word、Excel 等办公文件,以及视频、图片等多种类型文件的投屏,还支持网盘直投,无需下载和转格式。 特色功能丰富:投屏时可同步录制投屏画面,部分版本还支持通过触控屏或电视端外接鼠标反控电脑,以及在投屏过程中用画笔实时标注等功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值