android中Activity传递参数之onActivityResult
16lz
2021-01-23
我们的一个Activity要调用一个新的Activity,然后用户对新的Activity操作完成后,关闭新的Activity,这时需要将新的Activity中的一些值传递给旧的Activity。这种情况不用自己处理,Android已经为我们编写了一个onActivityResult(int requestCode, int resultCode, Intent data)方法,专门处理这种情况。 首先,在旧的Acitvity中的启动Intent方法不能再使用之前的startActivity,而要给用startActivityForResult(i, REQUESTCODE1 );方法,该方法第一个参数为要传递的intent,第二个参数为请求码,该请求码其实就是一个整型变量,用于指明是那个方法、或者说是那个控件启动了该intent,其最主要的目的是在onActivityResult(int requestCode, int resultCode, Intent data)方法中,编程使用。读者这里可以不用深究,看到例子后,便会明白。该处代码如下: Intent i = new Intent(TestActivity.this,SecondActivity.class); i.putExtra("uName", "legend"); i.putExtra("uAge", (short)18); startActivityForResult(i, REQUESTCODE1 ); 其次,在新的Activity中要接受刚刚传递的Intent,接受方法如上所述,这里不再赘述。在新的Acitvity处理完成后,需要同过setResult(Intent i)方法来设置新的Activity结束后需要传递会旧的Activity的Intent。之后调用新的Activity的finish()方法,结束新的Acitvity就可以了。代码如下: Intent resultIntent = new Intent(); resultIntent.putExtra("uName", "legend2"); resultIntent.putExtra("uAge", (short)22); setResult(RESULTCODE1, resultIntent); SecondActivity.this.finish(); 最后,在旧的Activity中重写onActivityResult(int requestCode, int resultCode, Intent data)方法,该方法的三个参数,这里就不在赘述了,相信读者一看即明白,这里给出代码如下: if(requestCode == REQUESTCODE1){ System.out.println("REQUESTCODE equal"); if(resultCode == SecondActivity.RESULTCODE1){ System.out.println("RESULTCODE equal"); String uName = data.getStringExtra("uName"); short uAge = data.getShortExtra("uAge", (short)0); tv.setText("uName:"+uName+" uAge:"+uAge); } }
更多相关文章
- mtk android内置nginx服务器的方法
- ubuntu 编译 Android 出现的若干错误及解决方法
- 解决EventBus中接收方法中无法更新UI的问题
- Android保持屏幕常亮的三种方法
- Android .so abi兼容,通用armeabi-v7a和arm64-v8a架构的方法
- Android 首选网络模式默认值的修改方法
- Android代码内存优化建议-OnTrimMemory优化