失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 安卓使用intent切换到同级窗口和子窗口 并从子窗口中获取返回数据

安卓使用intent切换到同级窗口和子窗口 并从子窗口中获取返回数据

时间:2022-03-06 00:47:56

相关推荐

安卓使用intent切换到同级窗口和子窗口 并从子窗口中获取返回数据

全栈工程师开发手册 (作者:栾鹏)

安卓教程全解

安卓使用intent切换窗口,并从子窗口中获取返回数据

切换到应用内部同级窗口,同时传递数据

窗口 Intent_Activity 切换到应用内同级窗口 Intent_SubActivity

在Intent_Activity.java中调用下面函数,在切换中可以通过Bundle传递数据,

public void to_activity(){Intent myintent = new Intent();Bundle data = new Bundle();data.putString("mykey", "myvalue"); //向intent写入数据myintent.putExtras(data); //将数据模块放入切换类中myintent.setClass(Intent_Activity.this,Intent_SubActivity.class);startActivity(myintent); //启动新页面Log.v("窗口切换", "主窗口:"+"myvalue");finish();}

在Intent_SubActivity.java中调用下面函数,通过getIntent,getData,getExtras获取数据

public void getdata() {Intent intent = this.getIntent(); //getIntent返回最初用来创建activity的IntentString action = intent.getAction(); //读取动作Uri data = intent.getData(); //读取数据Bundle local_data=intent.getExtras(); //读取本地intent中的数据模块String myvalue=local_data.getString("mykey"); //读取数据模块中的数据值Log.v("窗口切换", "同胞窗口:"+myvalue);//startNextMatchingActivity(intent); //将intent传递给下一个匹配的activity}

切换到应用内部子窗口,并接收子窗口关闭后的返回数据

1、窗口 Intent_Activity 切换到应用内子窗口 Intent_SubActivity

在Intent_Activity.java中调用下面函数,在切换中可以通过Bundle传递数据。

父窗口启动子窗口时,设置请求码,用来区别同一个父窗口请求的不同子窗口,或对同一个子窗口不同状况下不同类别的请求。

private final int request_type1=1; //一般不同的请求码使用终态int型表示。public void to_activity_result(){Intent myintent = new Intent();Bundle data = new Bundle(); data.putString("mykey", "myvalue"); //向intent写入数据myintent.putExtras(data); //将数据模块放入切换类中myintent.setClass(Intent_Activity.this,Intent_SubActivity.class);startActivityForResult(myintent, request_type1); //参数11表示请求码,可以自己传递一个int型数据,用于区别打开多个不同的子窗口Log.v("窗口切换", "父窗口发送到子窗口:"+"myvalue");}

2、在子窗口Intent_SubActivity.java中调用下面函数,接收父窗口传来的数据,并设置返回数据。

子窗口返回到应用内部父窗口时,结果码用来区别同一个子窗口对不同父窗口的响应,或不同情况下的响应

public void back(){Intent intent = this.getIntent(); //getIntent返回最初用来创建activity的IntentBundle local_data=intent.getExtras(); //读取本地intent中的数据模块String myvalue=local_data.getString("mykey"); //读取数据模块中的数据值Log.v("窗口切换", "子窗口接收到父窗口:"+myvalue);Intent backintent = new Intent();Bundle backdata = new Bundle(); backdata.putString("mykey1", "back_value"); //向intent写入数据backintent.putExtras(backdata); //将数据模块放入切换类中setResult(101,backintent); //参数101表示结果码,自己传递一个int型数据,用于区别同一个子窗口的多种可能的返回结果Log.v("窗口切换", "子窗口发送到父窗口:"+"back_value");finish();}

3、父窗口Intent_Activity.java重写onActivityResult结果函数,收集子窗口返回的数据。

在onActivityResult通过请求码和结果码区别不同的请求下,不同的应答。

@Overrideprotected void onActivityResult(int requestCode,int resultCode,Intent data){ //requestCode打开子窗口时的请求码,resultCode子窗口返回的响应码,data目标窗口返回的intentsuper.onActivityResult(requestCode, resultCode, data);if (requestCode==request_type1) {if (resultCode==101) {Bundle backdata = data.getExtras(); //取得来自子窗口的数据模块String backstr = backdata.getString("mykey1");Log.v("窗口切换", "父窗口接收到子窗口:"+backstr);}if (resultCode==102) {Bundle backdata = data.getExtras(); //取得来自子窗口的数据模块String backstr = backdata.getString("mykey2");Log.v("窗口切换", "父窗口接收到子窗口:"+backstr);}}}

如果觉得《安卓使用intent切换到同级窗口和子窗口 并从子窗口中获取返回数据》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。