android startActivityForResult(Intent intent, int requestCode) 整理与总结!
搞了4个月android一直没用过startActivityForResult,这突然用了一下还真有点懵,查看API并google了一下,特整理如下:
假设有两个Activity,主界面A,功能界面B,由A启动B,并传数据给B,B在经过处理后把数据传回给A。
先是A传B:
-
Bundlebundle=
new
Bundle();
-
bundle.putString("Dir"
,
"/sdcard"
);
-
Intentintent=new
Intent();
-
intent.putExtras(bundle);
-
intent.setClass(A.this
,B.
class
);
-
A.this
.startActivityForResult(intent,0);
-
然后就是B接收再传回:
-
Intentit=
new
Intent();
-
Bundlebundle=it.getExtras();
-
StringmString=bundle.getString("Dir"
);
-
-
mString=mString+"/"
-
bundle.putString("Dir"
,mString);
-
B.this
.setResult(0,it);
-
finish();
A最后再接收B回传的结果:
-
protected
void
onActivityResult(
int
requestCode,
int
resultCode,Intentdata)
-
{
-
-
-
}
最后以一个SDK开发大全上面的例子来加深理解
先是A传入B,并且把接收B传回结果的接收器写在A中
-
packagecom.my;
-
-
-
importandroid.app.Activity;
-
importandroid.content.Intent;
-
importandroid.os.Bundle;
-
importandroid.view.View;
-
importandroid.widget.Button;
-
importandroid.widget.EditText;
-
importandroid.widget.RadioButton;
-
-
public
class
AextendsActivity
-
{
-
private
EditTextet;
-
private
RadioButtonrb1;
-
private
RadioButtonrb2;
-
-
-
@Override
-
public
void
onCreate(BundlesavedInstanceState)
-
{
-
super.onCreate(savedInstanceState);
-
-
setContentView(R.layout.main);
-
-
-
Buttonb1=(Button)findViewById(R.id.button1);
-
b1.setOnClickListener(new
Button.OnClickListener()
-
{
-
public
void
onClick(Viewv)
-
{
-
-
et=(EditText)findViewById(R.id.height);
-
double
height=Double.parseDouble(et.getText().toString());
-
-
Stringsex=""
;
-
rb1=(RadioButton)findViewById(R.id.sex1);
-
rb2=(RadioButton)findViewById(R.id.sex2);
-
if
(rb1.isChecked())
-
{
-
sex="M"
;
-
}
-
else
-
{
-
sex="F"
;
-
}
-
-
-
Intentintent=new
Intent();
-
intent.setClass(A.this
,B.
class
);
-
-
-
Bundlebundle=new
Bundle();
-
bundle.putDouble("height"
,height);
-
bundle.putString("sex"
,sex);
-
-
-
intent.putExtras(bundle);
-
-
-
startActivityForResult(intent,0);
-
}
-
});
-
}
-
-
-
@Override
-
protected
void
onActivityResult(
int
requestCode,
int
resultCode,
-
Intentdata)
-
{
-
switch
(resultCode)
-
{
-
case
0:
-
-
Bundlebunde=data.getExtras();
-
Stringsex=bunde.getString("sex"
);
-
double
height=bunde.getDouble(
"height"
);
-
-
et.setText(""
+height);
-
if
(sex.equals(
"M"
))
-
{
-
rb1.setChecked(true
);
-
}
-
else
-
{
-
rb2.setChecked(true
);
-
}
-
break
;
-
default
:
-
break
;
-
}
-
}
-
}
然后是B接收到A,再回传给A
-
packagecom.my;
-
-
-
importjava.text.DecimalFormat;
-
importjava.text.NumberFormat;
-
importandroid.app.Activity;
-
importandroid.content.Intent;
-
importandroid.os.Bundle;
-
importandroid.view.View;
-
importandroid.widget.Button;
-
importandroid.widget.TextView;
-
-
public
class
BextendsActivity
-
{
-
Bundlebunde;
-
Intentintent;
-
-
@Override
-
public
void
onCreate(BundlesavedInstanceState)
-
{
-
super.onCreate(savedInstanceState);
-
-
setContentView(R.layout.myalyout);
-
-
-
intent=this
.getIntent();
-
bunde=intent.getExtras();
-
-
-
Stringsex=bunde.getString("sex"
);
-
double
height=bunde.getDouble(
"height"
);
-
-
-
StringsexText=""
;
-
if
(sex.equals(
"M"
))
-
{
-
sexText="男性"
;
-
}
-
else
-
{
-
sexText="女性"
;
-
}
-
-
-
Stringweight=this
.getWeight(sex,height);
-
-
-
TextViewtv1=(TextView)findViewById(R.id.text1);
-
tv1.setText("你是一位"
+sexText+
"/n你的身高是"
+height+
-
"厘米/n你的标准体重是"
+weight+
"公斤"
);
-
-
-
Buttonb1=(Button)findViewById(R.id.button1);
-
b1.setOnClickListener(new
Button.OnClickListener()
-
{
-
public
void
onClick(Viewv)
-
{
-
-
B.this
.setResult(0,intent);
-
-
-
B.this
.finish();
-
}
-
});
-
}
-
-
-
private
Stringformat(
double
num)
-
{
-
NumberFormatformatter=new
DecimalFormat(
"0.00"
);
-
Strings=formatter.format(num);
-
return
s;
-
}
-
-
-
private
StringgetWeight(Stringsex,
double
height)
-
{
-
Stringweight=""
;
-
if
(sex.equals(
"M"
))
-
{
-
weight=format((height-80)*0.7);
-
}
-
else
-
{
-
weight=format((height-70)*0.6);
-
}
-
return
weight;
-
}
-
}
都结束了,就那么多东西,回家打dota去了,哈哈,我的vs号是Hello___Wo__,谁有空加我一起搞啊,哈哈哈!
分享到:
相关推荐
当我们需要在不同的Activity之间传递数据或执行某种操作并等待结果时,就需要利用到Android的Intent机制来打开新的Activity,并通过startActivityForResult()方法来获取返回的结果。下面我们将详细探讨这个过程。 1...
当我们需要在一个Activity启动另一个Activity并期待得到一些结果时,就需要使用到`startActivityForResult()`方法,这就是“Android review 打开activity返回结果”这个话题的核心。下面将详细介绍这个过程及其相关...
Android的Intent对象用于启动一个新的活动(Activity)或者服务(Service),也可以用来传递数据。在我们的场景中,Intent用于启动WPS Office并加载PPT文件。Intent有两种类型:显式Intent和隐式Intent。显式Intent...
在Android开发中,与相机和图片相关的功能是...总结来说,Android应用中实现打开相机和图片功能涉及启动相机应用、处理返回结果、从图库选择图片以及权限管理。理解这些知识点能帮助开发者构建更完善的图像相关功能。
下面将详细介绍如何在Android应用中集成并实现对不同文档类型的打开和支持。 1. **使用Intent** Android系统通过Intent机制来启动其他应用程序组件,如活动(Activity)、服务(Service)等。要打开文档,我们可以...
`onBackPressed`方法重写了Android的返回键行为,当用户按下返回键时,如果WebView可以回退(即有浏览历史),则调用`goBack`方法回到上一个网页;否则,执行默认操作,关闭Activity。 布局文件`activity_my_web_...
这两种方式都可以承载`ListView`,并在用户选择后关闭对话框并返回结果。 最后,为了使程序兼容不同的Android版本,我们需要使用`Build.VERSION.SDK_INT`进行条件判断,以使用适合当前API级别的方法和组件。例如,...
"Android打开手机相册获取图片路径" Android 开发中,获取手机相册中的图片路径是一个常见的问题,以下将详细介绍如何在 Android 中打开手机相册获取图片路径。 一、权限申请 在 Android 中,访问外部存储需要申请...
在Android系统中,打开系统内置的APK程序是一项常见的任务,尤其对于开发者来说,了解如何实现这一功能至关重要。本文将详细讲解如何通过编程方式来实现这一目标,让你的Android应用能够无缝地启动其他已安装的系统...
3. **返回原界面**: 当用户从其他应用返回时,通常会自动回到之前启动应用的地方,这是Android系统默认的行为。如果你需要在其他应用关闭时执行特定操作,如更新UI,可以利用`Activity`的生命周期方法。例如,在`...
在这个方法里,不要调用`finish()`来关闭活动,而是保持扫描界面打开并显示扫描结果: ```java @Override protected void handleDecode(Result rawResult, Bitmap barcode) { // 显示扫描结果,但不关闭活动 //...
在Android开发中,创建一个用于...通过以上步骤,你可以在Android应用中创建一个能够打开文件的对话框,并获取用户选定文件的路径。记住,始终确保用户体验流畅,同时遵循Android的设计指南,以提供一致且直观的界面。
Android7.0 Intent打开文件管理器 获取文件真实路径。虽然网上很多demo,但是没有一个能够兼容所有Android机的,去网上学习了然后自己亲测过手机分别有Android7.0/6.0/4.3个版本。
在Android平台上,打开网络PDF文件是一项常见的需求,无论是阅读电子书、查看文档还是处理工作,PDF格式因其良好的兼容性和稳定性而被广泛使用。本篇将详细介绍如何实现这一功能,包括PDF文件的下载以及在Android...
在Android平台上,开发一个能够扫描并打开TXT文件的应用是一个实用的功能。这个应用的核心技术涉及到文件系统操作、文件过滤以及文本阅读器的实现。下面将详细解释实现这一功能所需的关键知识点。 1. **Android权限...
在Android中,我们需要用Java编写代码,主要涉及的类有`Intent`(用于启动活动)、`ContentResolver`(用于访问媒体库)和`Camera`(用于打开相机)。同样,你需要创建一个Java动态链接库(`.so`文件)和对应的Java...
当使用HttpURLConnection发送GET请求时,你需要创建一个URL对象来表示你要访问的Web服务地址,然后打开一个连接并设置请求方法。例如: ```java URL url = new URL(...
在Android开发中,有时我们需要在应用内部展示网页内容或者实现简单的本地服务器功能,这就涉及到`Android Studio`、`NanoHTTPD`以及`WebView`的综合使用。本篇将详细讲解如何利用`Android Studio`集成`NanoHTTPD`来...
Android调用系统相机拍照,默认返回为缩略图大约几十K,一些场景下返回缩略图时不行的。在这个源码里分别实现了调用系统相机后返回缩略图(几十k)和原图(1—n M不等的图片(即正常用相机拍照的图片))。
在`fileProviderDemo-master`这个项目中,你可以找到一个完整的示例,展示如何在Android 7.0上使用`FileProvider`来访问文件并打开相机。通过查看源代码,你可以更好地理解上述步骤的实现细节,同时也可以作为你的...