如何做影视网站的标题,网站建设 钱,wordpress搭的,wordpress 输出数组最近在写一个安卓程序#xff0c;在程序里需要用到startActivityForResult这个Intent操作关键字#xff0c;与该关键字有关的还有onActivityResult和setResult。这里对其用法进行一个总结。
三者在API中的形式
//startActivityForResult与startActivity类似#xff0c;只不…最近在写一个安卓程序在程序里需要用到startActivityForResult这个Intent操作关键字与该关键字有关的还有onActivityResult和setResult。这里对其用法进行一个总结。
三者在API中的形式
//startActivityForResult与startActivity类似只不过该方法可将方法打开新的Activity新的Activity 关闭后会向前面的Activity传回数据为了得到传回的数据必须在前面的Activity中重写onActivityResult(int requestCode, int resultCode, Intent data)方法。
startActivityForResult(Intent intent, int requestCode)
onActivityResult(int requestCode, int resultCode, Intent data)
setResult(int resultCode, Intent data)三者组合的作用 通过API中的情况基本可以推出三者的操作逻辑假设现在有两个activity A和B假如我们从A跳转到B【startActivityForResult实现】再B完成相应的工作以后finish掉B然后传数据给A【setResult实现】A在接受到数据以后做相应的操作【onActivityResult实现】。其操作逻辑可以用以下代码来表示 A
//启动B
Intent intent new Intent();
intent.setClass(A.this, B.class);
//1是我们自己定义常量用于标注由A-B这个活动对应下面使用到的onActivityResult中的requestCode
startActivityForResult(intent, 1);
B
//do something
//此方法中的 1 表示onActivityResult的resultCode一般也用 RESULT_OK1和RESULT_CANCELED0表示data一般为 Intent类型的数据也可以为 null
setResult(1, data);
finish();然后由活动B再返回A执行onActivityResult方法。
代码示例
ActivityA.Java中的代码
button1.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View view) {Intent intent new Intent(com.example.activitytest.ACTTON_START);startActivityForResult(intent,1);//打开活动B}});ActivityB.java代码 在活动B中用 setResult 方法设置好要返回的结果setResult()接收两个参数第一个是活动返回处理结果一般只是用RESULT_OK和RESULT_CANCELED另一个这是将带有数据的Intent传递回去。 button2.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View view) {Intent intent new Intent();intent.putExtra(data_return,测试一下);//要返回的结果setResult(RESULT_OK,intent);finish();//销毁活动B}});在活动B被销毁后 会回调上一个活动即活动A的onActivityResult()方法想要在活动A中获取传递的结果就需要覆写该方法。
Override // 请求码 处理结果 带返回数据的Intent protected void onActivityResult(int requestCode, int resultCode, Nullable Intent data) {if(data!null){switch (requestCode){case 1 :if(resultCode RESULT_OK){String returnData data.getStringExtra(data_return);Log.d(MainActivity,returnData);}break;default:}}else{return ;}这样在活动B被销毁后就会回到活动A获取到活动B返回的数据了。但在用户如果在活动B并没有定义按钮button2而是按下Back按键这时候在 ActivityB.java中覆写 onBackPressed()方法。 Overridepublic void onBackPressed() {Intent intent new Intent();intent.putExtra(data_return,测试一下);setResult(RESULT_OK,intent);finish();}});需要注意的是应该关注到在返回 ActivityA.java 时onActivityResult中 需要判断 data 与 null 的关系这样子有助于程序的稳健性。