安卓使用intent切换到同级窗口和子窗口,并从子窗口中获取返回数据
2017-10-24 21:01
633 查看
全栈工程师开发手册 (作者:栾鹏)
安卓教程全解
安卓使用intent切换窗口,并从子窗口中获取返回数据
在Intent_Activity.java中调用下面函数,在切换中可以通过Bundle传递数据,
在Intent_SubActivity.java中调用下面函数,通过getIntent,getData,getExtras获取数据
在Intent_Activity.java中调用下面函数,在切换中可以通过Bundle传递数据。
父窗口启动子窗口时,设置请求码,用来区别同一个父窗口请求的不同子窗口,或对同一个子窗口不同状况下不同类别的请求。
2、在子窗口Intent_SubActivity.java中调用下面函数,接收父窗口传来的数据,并设置返回数据。
子窗口返回到应用内部父窗口时,结果码用来区别同一个子窗口对不同父窗口的响应,或不同情况下的响应
3、父窗口Intent_Activity.java重写onActivityResult结果函数,收集子窗口返回的数据。
在onActivityResult通过请求码和结果码区别不同的请求下,不同的应答。
安卓教程全解
安卓使用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的Intent String 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的Intent Bundle 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通过请求码和结果码区别不同的请求下,不同的应答。
@Override protected void onActivityResult(int requestCode,int resultCode,Intent data){ //requestCode打开子窗口时的请求码,resultCode子窗口返回的响应码,data目标窗口返回的intent super.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); } } }
相关文章推荐
- QT中实现多窗口切换,并从子窗口返回数据
- QT5中实现多窗口切换,并从子窗口返回数据
- 意图(Intent)讲解2:安卓使用意图(Intent)传递数据并返回结果
- 使用handler和Message获取xutils发送POST请求从服务器端返回数据
- activity之间使用intent传递数据时,获取不到数据
- 安卓学习笔记(五)、使用Intent返回数据
- Flex打开新窗口将主窗口数据传给子窗口然后返回
- 关于Jquery中的$.each获取各种返回类型数据的使用方法
- Jquery中的$.each获取各种返回类型数据的使用方法
- Jquery 使用Ajax获取后台返回的Json数据后,页面处理
- Jquery中的$.each获取各种返回类型数据的使用方法
- android 使用Intent传递数据之返回结果
- 页面使用$.getJSON只获取一次数据,导致多个请求返回的都是第一个结果
- 解决在 使用 AjaxFileUploder 插件时,不能获取返回的 json 结果数据
- android学习笔记---1.为应用添加新的Activity,中使用Intent(意图),结果码,请求码,得到新打开Activity 关闭后返回的数据,Bundle类的作用
- 《老罗Android》学习之使用Intent传递数据及Activity返回数据
- 使用前端使用jQuery获取 在apsx页面的page_load方法直接返回json数据
- 【Android】使用Intent实现数据传递之返回结果
- 使用Intent传递数据之返回结果
- VC中ADO使用SQLOLEDB数据驱动时,无法获取存储过程RAISERROR返回的字符串描述