`

android 打开新活动并返回结果

 
阅读更多

android startActivityForResult(Intent intent, int requestCode) 整理与总结!

搞了4个月android一直没用过startActivityForResult,这突然用了一下还真有点懵,查看API并google了一下,特整理如下:

假设有两个Activity,主界面A,功能界面B,由A启动B,并传数据给B,B在经过处理后把数据传回给A。

先是A传B:

  1. Bundlebundle= new Bundle();
  2. bundle.putString("Dir" , "/sdcard" );
  3. Intentintent=new Intent();
  4. intent.putExtras(bundle);
  5. intent.setClass(A.this ,B. class );
  6. A.this .startActivityForResult(intent,0);
  7. //这里的0代表requestCode,就是用来做个标记(要求是大于等于0的整数);


然后就是B接收再传回:

  1. Intentit= new Intent();
  2. Bundlebundle=it.getExtras();
  3. StringmString=bundle.getString("Dir" );
  4. mString=mString+"/"
  5. bundle.putString("Dir" ,mString);
  6. B.this .setResult(0,it); //0与前面A里的0对应
  7. finish();


A最后再接收B回传的结果:

  1. protected void onActivityResult( int requestCode, int resultCode,Intentdata)
  2. {
  3. //B返回时触发
  4. }

最后以一个SDK开发大全上面的例子来加深理解

先是A传入B,并且把接收B传回结果的接收器写在A中

  1. packagecom.my;
  2. /*import相关class*/
  3. importandroid.app.Activity;
  4. importandroid.content.Intent;
  5. importandroid.os.Bundle;
  6. importandroid.view.View;
  7. importandroid.widget.Button;
  8. importandroid.widget.EditText;
  9. importandroid.widget.RadioButton;
  10. public class AextendsActivity
  11. {
  12. private EditTextet;
  13. private RadioButtonrb1;
  14. private RadioButtonrb2;
  15. /**Calledwhentheactivityisfirstcreated.*/
  16. @Override
  17. public void onCreate(BundlesavedInstanceState)
  18. {
  19. super.onCreate(savedInstanceState);
  20. /*载入main.xmlLayout*/
  21. setContentView(R.layout.main);
  22. /*以findViewById()取得Button对象,并添加onClickListener*/
  23. Buttonb1=(Button)findViewById(R.id.button1);
  24. b1.setOnClickListener(new Button.OnClickListener()
  25. {
  26. public void onClick(Viewv)
  27. {
  28. /*取得输入的身高*/
  29. et=(EditText)findViewById(R.id.height);
  30. double height=Double.parseDouble(et.getText().toString());
  31. /*取得选择的性别*/
  32. Stringsex="" ;
  33. rb1=(RadioButton)findViewById(R.id.sex1);
  34. rb2=(RadioButton)findViewById(R.id.sex2);
  35. if (rb1.isChecked())
  36. {
  37. sex="M" ;
  38. }
  39. else
  40. {
  41. sex="F" ;
  42. }
  43. /*new一个Intent对象,并指定class*/
  44. Intentintent=new Intent();
  45. intent.setClass(A.this ,B. class );
  46. /*new一个Bundle对象,并将要传递的数据传入*/
  47. Bundlebundle=new Bundle();
  48. bundle.putDouble("height" ,height);
  49. bundle.putString("sex" ,sex);
  50. /*将Bundle对象assign给Intent*/
  51. intent.putExtras(bundle);
  52. /*调用ActivityB*/
  53. startActivityForResult(intent,0);
  54. }
  55. });
  56. }
  57. /*覆盖onActivityResult()*/
  58. @Override
  59. protected void onActivityResult( int requestCode, int resultCode,
  60. Intentdata)
  61. {
  62. switch (resultCode)
  63. {
  64. case 0:
  65. /*取得来自Activity2的数据,并显示于画面上*/
  66. Bundlebunde=data.getExtras();
  67. Stringsex=bunde.getString("sex" );
  68. double height=bunde.getDouble( "height" );
  69. et.setText("" +height);
  70. if (sex.equals( "M" ))
  71. {
  72. rb1.setChecked(true );
  73. }
  74. else
  75. {
  76. rb2.setChecked(true );
  77. }
  78. break ;
  79. default :
  80. break ;
  81. }
  82. }
  83. }

然后是B接收到A,再回传给A

  1. packagecom.my;
  2. /*import相关class*/
  3. importjava.text.DecimalFormat;
  4. importjava.text.NumberFormat;
  5. importandroid.app.Activity;
  6. importandroid.content.Intent;
  7. importandroid.os.Bundle;
  8. importandroid.view.View;
  9. importandroid.widget.Button;
  10. importandroid.widget.TextView;
  11. public class BextendsActivity
  12. {
  13. Bundlebunde;
  14. Intentintent;
  15. /**Calledwhentheactivityisfirstcreated.*/
  16. @Override
  17. public void onCreate(BundlesavedInstanceState)
  18. {
  19. super.onCreate(savedInstanceState);
  20. /*载入mylayout.xmlLayout*/
  21. setContentView(R.layout.myalyout);
  22. /*取得Intent中的Bundle对象*/
  23. intent=this .getIntent();
  24. bunde=intent.getExtras();
  25. /*取得Bundle对象中的数据*/
  26. Stringsex=bunde.getString("sex" );
  27. double height=bunde.getDouble( "height" );
  28. /*判断性别*/
  29. StringsexText="" ;
  30. if (sex.equals( "M" ))
  31. {
  32. sexText="男性" ;
  33. }
  34. else
  35. {
  36. sexText="女性" ;
  37. }
  38. /*取得标准体重*/
  39. Stringweight=this .getWeight(sex,height);
  40. /*设置输出文字*/
  41. TextViewtv1=(TextView)findViewById(R.id.text1);
  42. tv1.setText("你是一位" +sexText+ "/n你的身高是" +height+
  43. "厘米/n你的标准体重是" +weight+ "公斤" );
  44. /*以findViewById()取得Button对象,并添加onClickListener*/
  45. Buttonb1=(Button)findViewById(R.id.button1);
  46. b1.setOnClickListener(new Button.OnClickListener()
  47. {
  48. public void onClick(Viewv)
  49. {
  50. /*返回result回上一个activity*/
  51. B.this .setResult(0,intent);
  52. /*结束这个activity*/
  53. B.this .finish();
  54. }
  55. });
  56. }
  57. /*四舍五入的method*/
  58. private Stringformat( double num)
  59. {
  60. NumberFormatformatter=new DecimalFormat( "0.00" );
  61. Strings=formatter.format(num);
  62. return s;
  63. }
  64. /*以findViewById()取得Button对象,并添加onClickListener*/
  65. private StringgetWeight(Stringsex, double height)
  66. {
  67. Stringweight="" ;
  68. if (sex.equals( "M" ))
  69. {
  70. weight=format((height-80)*0.7);
  71. }
  72. else
  73. {
  74. weight=format((height-70)*0.6);
  75. }
  76. return weight;
  77. }
  78. }

都结束了,就那么多东西,回家打dota去了,哈哈,我的vs号是Hello___Wo__,谁有空加我一起搞啊,哈哈哈!

分享到:
评论

相关推荐

    Android 打开Activity,获取其返回结果Demo

    当我们需要在不同的Activity之间传递数据或执行某种操作并等待结果时,就需要利用到Android的Intent机制来打开新的Activity,并通过startActivityForResult()方法来获取返回的结果。下面我们将详细探讨这个过程。 1...

    Android review 打开activity返回结果

    当我们需要在一个Activity启动另一个Activity并期待得到一些结果时,就需要使用到`startActivityForResult()`方法,这就是“Android review 打开activity返回结果”这个话题的核心。下面将详细介绍这个过程及其相关...

    Android 调用WPS打开PPT

    Android的Intent对象用于启动一个新的活动(Activity)或者服务(Service),也可以用来传递数据。在我们的场景中,Intent用于启动WPS Office并加载PPT文件。Intent有两种类型:显式Intent和隐式Intent。显式Intent...

    android 打开相机和图片

    在Android开发中,与相机和图片相关的功能是...总结来说,Android应用中实现打开相机和图片功能涉及启动相机应用、处理返回结果、从图库选择图片以及权限管理。理解这些知识点能帮助开发者构建更完善的图像相关功能。

    android 打开各种文档的demo

    下面将详细介绍如何在Android应用中集成并实现对不同文档类型的打开和支持。 1. **使用Intent** Android系统通过Intent机制来启动其他应用程序组件,如活动(Activity)、服务(Service)等。要打开文档,我们可以...

    Android中WebView返回到上一个网页

    `onBackPressed`方法重写了Android的返回键行为,当用户按下返回键时,如果WebView可以回退(即有浏览历史),则调用`goBack`方法回到上一个网页;否则,执行默认操作,关闭Activity。 布局文件`activity_my_web_...

    一个打开文件目录操作的android程序

    这两种方式都可以承载`ListView`,并在用户选择后关闭对话框并返回结果。 最后,为了使程序兼容不同的Android版本,我们需要使用`Build.VERSION.SDK_INT`进行条件判断,以使用适合当前API级别的方法和组件。例如,...

    Android打开手机相册获取图片路径

    "Android打开手机相册获取图片路径" Android 开发中,获取手机相册中的图片路径是一个常见的问题,以下将详细介绍如何在 Android 中打开手机相册获取图片路径。 一、权限申请 在 Android 中,访问外部存储需要申请...

    android打开手机文件

    综上所述,Android打开手机文件涉及到Intent、权限管理、FileProvider、文件选择对话框的实现等多个方面。开发者需要根据具体需求,合理运用这些知识点来创建功能完善的文件操作体验。在实际项目中,通常还需要考虑...

    android打开系统APK

    在Android系统中,打开系统内置的APK程序是一项常见的任务,尤其对于开发者来说,了解如何实现这一功能至关重要。本文将详细讲解如何通过编程方式来实现这一目标,让你的Android应用能够无缝地启动其他已安装的系统...

    android打开另一App,并监测运行情况

    3. **返回原界面**: 当用户从其他应用返回时,通常会自动回到之前启动应用的地方,这是Android系统默认的行为。如果你需要在其他应用关闭时执行特定操作,如更新UI,可以利用`Activity`的生命周期方法。例如,在`...

    Android zxing持续扫码不返回上一页

    在这个方法里,不要调用`finish()`来关闭活动,而是保持扫描界面打开并显示扫描结果: ```java @Override protected void handleDecode(Result rawResult, Bitmap barcode) { // 显示扫描结果,但不关闭活动 //...

    android打开一个文件对话框

    在Android开发中,创建一个用于...通过以上步骤,你可以在Android应用中创建一个能够打开文件的对话框,并获取用户选定文件的路径。记住,始终确保用户体验流畅,同时遵循Android的设计指南,以提供一致且直观的界面。

    android打开网络pdf文件

    在Android平台上,打开网络PDF文件是一项常见的需求,无论是阅读电子书、查看文档还是处理工作,PDF格式因其良好的兼容性和稳定性而被广泛使用。本篇将详细介绍如何实现这一功能,包括PDF文件的下载以及在Android...

    Android7.0 Intent打开文件管理器 获取文件真实路径

    Android7.0 Intent打开文件管理器 获取文件真实路径。虽然网上很多demo,但是没有一个能够兼容所有Android机的,去网上学习了然后自己亲测过手机分别有Android7.0/6.0/4.3个版本。

    基于android的扫描手机中txt文件并打开文件

    在Android平台上,开发一个能够扫描并打开TXT文件的应用是一个实用的功能。这个应用的核心技术涉及到文件系统操作、文件过滤以及文本阅读器的实现。下面将详细解释实现这一功能所需的关键知识点。 1. **Android权限...

    android访问web应用并返回xml字符串

    当使用HttpURLConnection发送GET请求时,你需要创建一个URL对象来表示你要访问的Web服务地址,然后打开一个连接并设置请求方法。例如: ```java URL url = new URL(...

    Unity打开IOS/Android图库和相机获取相片

    在Android中,我们需要用Java编写代码,主要涉及的类有`Intent`(用于启动活动)、`ContentResolver`(用于访问媒体库)和`Camera`(用于打开相机)。同样,你需要创建一个Java动态链接库(`.so`文件)和对应的Java...

    android studio使用NanoHTTPD 创建 http 服务器打开html并使用webView打开页面

    在Android开发中,有时我们需要在应用内部展示网页内容或者实现简单的本地服务器功能,这就涉及到`Android Studio`、`NanoHTTPD`以及`WebView`的综合使用。本篇将详细讲解如何利用`Android Studio`集成`NanoHTTPD`来...

    Android-android7.0访问文件打开相机功能

    在`fileProviderDemo-master`这个项目中,你可以找到一个完整的示例,展示如何在Android 7.0上使用`FileProvider`来访问文件并打开相机。通过查看源代码,你可以更好地理解上述步骤的实现细节,同时也可以作为你的...

Global site tag (gtag.js) - Google Analytics