记得毕业找工作面试,和一个技术人员交谈,他问我:startActivityForResult 知道吗? 当时看回答 “知道、跳转用的”,因为前面有个段startActivity.... 这种页面跳转经常用到,他接着问?知道怎么用吗? 当时愣了.... 确实不清楚(真的很基础、后悔基础没打牢固),,, 然后我就问他.如何用? 当时就一一解答,结果面试很轻松, 面试也是学习的时候,程序猿要不断的学习,不断的努力... 才有美好的生活! 哈哈... 闲话聊多叻!


主题:Intent 页面回调跳转(StartActivityForResult)


需求:

一:.mainActivity(A活动) 调转到 EmptionActivity(B活动)购物

二:选择对应的商品,操作

三:携带信息数据,返回 (A活动)


首先看下原理:



首先看下例子:

MainActivity:

public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button Button_Main=(Button) findViewById(R.id.Button_Main);Button_Main.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Intent intent=new Intent().setClass(MainActivity.this, EmptionActivity.class);startActivityForResult(intent, 1);}});}/** * 回调函数 * requestCode *      M--->E   M跳转时定义的标识  * resultCode *      E--->M   E跳转时定义的标识  * data *      E--->M  携带信息数据 */@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if(resultCode==10){Log.w("购买物品为: ", data.getStringExtra("computer"));}if(resultCode==20){Log.w("购买物品为: ", data.getStringExtra("book"));}//Toast.makeText(getApplicationContext(), "什么都没有买!", 3).show();  ? 系统返回这样行吗? if(resultCode==0){Log.w("???", "back 返回键");}//或者  这里用到requestCode  用到复杂判断时候,这里并不复杂!if(requestCode==1&&resultCode==0){Log.w("或者", "back 返回键");}}}





EmptionActivity:

public class EmptionActivity extends Activity implements OnClickListener {Button computer_Button, book_Button;String computer="电脑";String book="编程书";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_emption);computer_Button = (Button) findViewById(R.id.computer_Button);book_Button = (Button) findViewById(R.id.book_Button);computer_Button.setOnClickListener(this);book_Button.setOnClickListener(this);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.computer_Button:System.out.println("按下==》电脑Button");Intent intent1=new  Intent(EmptionActivity.this, MainActivity.class).putExtra("computer", computer);//标识列 + IntentsetResult(10, intent1); //一定要销毁当前Activity  不然你绝对跳不回去,finish(); break;case R.id.book_Button:/** * 讲下 * setResult(resultCode,intent)  第一个参数标识 * 没有特殊的操作,有的人就用系统提供的标识列(3个  int类型)  * RESULT_OK   成功    -1 * RESULT_CANCELED取消     0 * RESULT_FIRST_USER  可执行  1   * */System.out.println("按下==》编程书Button");Intent intent2=new  Intent(EmptionActivity.this, MainActivity.class).putExtra("book", book);//setResult(RESULT_OK, intent2);setResult(20, intent2);finish();break;//试问?如果顾客不购买物品,直接系统返回键?主页面如何提示?}}}


*布局文件就不贴了、 没啥意思!


效果图:

Android 页面回调跳转(startActivityForResult)_第1张图片


好了、在特殊注意地方已经代码说明, 具体代码下载:点击打开链接

欢迎转载、共同学习,请附出处:http://blog.csdn.net/cs_li1126/article/details/12529257


**************************************

思考:(扩展)

上面实例很简单、对于系统➹ Back返回!我们也可以用对应的函数来拦截,处理!

@Override public boolean onKeyDown(int keyCode, KeyEvent event) {  // TODO Auto-generated method stub  if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {  System.out.println("拦截Back返回键");     return true;    }    return super.onKeyDown(keyCode, event);   }

在对应的Activity活动 重用此方法,可以拦截Back返回键!

当然?问题出现了,我在区域或者控件当中,取消拦截返回键?怎么办?

一句话搞定!

 onBackPressed();  //取消返回键拦截!








更多相关文章

  1. android 中的广播 ,系统广播和自定义广播
  2. Android系统源码目录解析
  3. 《Android内核剖析》读书笔记 第18章 Android编译系统
  4. Android音频系统之USB设备通路(Android 5.1)
  5. Android系统定制和源码开发以及源码编译(附视频)
  6. Android 调用系统相机以及相册源码

随机推荐

  1. SQL Server 向临时表插入数据示例
  2. MS SQL Server游标(CURSOR)的学习使用
  3. 删除sqlserver数据库日志和没有日志的数
  4. SQL高级应用之同服务器上复制表到另一数
  5. 根据sql脚本修改数据库表结构的几种解决
  6. MSSQL自动重建出现碎片的索引的方法分享
  7. 将string数组转化为sql的in条件用sql查询
  8. SQL Server 定时访问url激活数据同步示例
  9. SQL Server2008数据库导入导出兼容性处理
  10. sql server2012附加数据库问题解决方法