一直对于onActivityResult这个用法很模糊,界面跳转及传值,最近因为工做须要,须要在3-5个界面之间传值返回,因此认真看了一下,如今来简单作个总结吧:spa
Action0-------->Action1-------->Action2-------->Action3-------->Action4code
需求:在第5个界面中点 击”返回“按钮,返到第一个界面Action0get
界面4: it
bt_click.setOnClickListener(View.OnClickListener() { (View v) { setResult()finish()} })
界面3:io
startActivityForResult(intent)}(requestCoderesultCodeIntent data) { (requestCode == && resultCode == ) { .setResult()finish()}
界面2:cli
startActivityForResult(intent)}(requestCoderesultCodeIntent data) { (requestCode == && resultCode == ) { .setResult()finish()}
界面1:List
startActivityForResult(intent)}(requestCoderesultCodeIntent data) { (requestCode == && resultCode == ) { .setResult()finish()}
界面0:request
详解:总结
从第5个界面跳到第4个界面时,根据第5个界面返回的resultCode和第4个界面的requestCode来肯定要执行的操做,这里是关闭界面,第一次是关闭第4个界面,依次类推,逐渐关闭中间的界面,返回到第一个界面。vi
传值:
startActivityForResult(Intent(Activity1.).putExtra(FROM_EXTRA,Activity1.A),1);
取值:
int from= getIntent().getIntExtra(FROM_EXTRA,0);