现在有一个activity1调用另一个activity2,调用activity2后,在把值传给activity1
activity1:
public class IntentActivity extends Activity { private Button btn=null; private final static int REQUEST_CODE=1; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); btn=(Button)findViewById(R.id.btn1); btn.setOnClickListener(listener); } private OnClickListener listener=new OnClickListener() { @Override public void onClick(View v) { // Intent intent=new Intent(); // intent.setAction(Intent.ACTION_SENDTO); // intent.setData(Uri.parse("smsto:5554")); // intent.putExtra("sms_body", "welcome to ...."); // startActivity(intent); Intent intent=new Intent(); intent.setClass(IntentActivity.this, second.class); intent.putExtra("str", "second demo"); //startActivity(intent); startActivityForResult(intent, REQUEST_CODE); } }; @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if(requestCode==REQUEST_CODE){ // if(resultCode==send.RESULT_OK){....} switch (resultCode) { case second.RESULT_OK: Bundle b=data.getExtras(); String str=b.getString("str1"); break;
} super.onActivityResult(requestCode, resultCode, data); } }
activity2:
public class second extends Activity {
private TextView secondTxt; private Button btn; final static int RESULT_CODE=1; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.second); Intent intent=getIntent(); Bundle bundle=intent.getExtras(); String str =bundle.getString("str"); secondTxt=(TextView)findViewById(R.id.sencondTv1); secondTxt.setText(str); btn=(Button)findViewById(R.id.btnSecond); btn.setOnClickListener(listener); } private OnClickListener listener=new OnClickListener() { @Override public void onClick(View v) { Intent intent=new Intent(); intent.putExtra("back", "back data"); setResult(RESULT_CODE,intent); finish(); } }; }
有几个值得注意的地方:
1. activity相互传递是Intent
2. Bundle接受Intent 中putExtra进去的参数
3. startActivityForResult(intent, REQUEST_CODE);中的REQUEST_CODE必须大于或等于0才会调用继承activity的 onActivityResult方法,不然会调用startActivityFromChild(要重写)方法
protected void onActivityResult(int requestCode, int resultCode, Intent data)
requestCode就是REQUEST_CODE的值(必须大于或等于0)
resultCode是activity2中RESULT_CODE(测试貌似-1都可以)的值
Intent data是activity2传过来的值,用Bundle接受处理
相关推荐
特别是当我们需要从一个Activity跳转到另一个Activity,并希望在完成某些操作后能够将数据回传给原始Activity时,就需要使用特定的技术来实现这一功能。本文将详细介绍如何使用`startActivityForResult()`来实现在...
这里的`requestCode`是一个整数值,用于标识此次启动Activity的目的或类型,这对于后续的结果处理非常重要。 #### Activity间数据回传 完成数据传递后,我们还需要考虑如何将B处理后的结果数据返回给A。这主要...
在Android中,当你启动一个新的`Activity`并希望在用户完成某些操作后得到结果,就需要使用`startActivityForResult()`方法而不是普通的`startActivity()`. 这个方法允许你在启动`Activity`时设置一个请求码,当目标...
如果两个Activity共享同一个Handler,那么一个Activity可以通过发送消息给Handler,由Handler在正确的线程(通常是主线程)中执行更新UI的操作,从而达到间接修改另一个Activity内容的目的。但是,这种做法并不常见...
本篇文章将详细介绍如何在Android的两个Activity之间有效地传送图片,并在另一个Activity中独立显示。 首先,理解Android中的Intent机制是关键。Intent主要用于启动一个新的Activity或者服务,同时也可作为数据载体...
5. **Result Code**: 在子Activity中,我们可以通过setResult()方法设置一个结果码,这个码可以是自定义的,用于表明子Activity的执行状态,如成功、取消等。配合请求码,可以区分不同来源的返回数据。 6. **Bundle...
在Android应用开发中,启动另一个Activity并返回结果是常见的操作,通常用于实现用户交互或数据交换。例如,从一个Activity启动相机应用拍摄照片后,我们需要获取拍摄的照片并显示在当前Activity上。这个过程就涉及...
例如,在一个选择图片的应用场景中,一个Activity启动了图片选择器,选择完成后,选择器Activity通过setResult()将选中的图片信息传回,源Activity则在onActivityResult()中接收到这个信息并进行后续处理。...
当需要从第二个Activity返回结果到第一个Activity时,可以使用startActivityForResult()方法启动第二个Activity,并在第二个Activity中调用setResult()方法设置结果,最后在第一个Activity的onActivityResult()方法...
在数据传递中,`Intent`主要用来创建一个从一个`Activity`到另一个`Activity`的通道。 ```java // 创建一个新的Intent Intent intent = new Intent(currentActivity, TargetActivity.class); ``` ### 2. 通过`...
2. **Binder**: Service通过实现IBinder接口,提供一个 Binder 对象给Activity绑定。Activity通过bindService()方法获取到Binder对象,从而可以直接调用Service的方法。这种方式效率较高,但需要编写较多代码,并且...
在Android开发中,ActivityGroup是一种老式的容器组件,它允许开发者在一个Activity中嵌套其他Activity作为子视图。然而,自Android 3.0(API级别11)开始,这个功能已被Fragment替代,因此现在使用ActivityGroup并...
现在,当你在父Activity中通过Intent启动子Activity,并指定一个请求码,如: ```java Intent intent = new Intent(this, ChildActivity.class); startActivityForResult(intent, MY_REQUEST_CODE); ``` 这样,当...
这个接口通常包含一个或多个方法,这些方法用于接收并处理来自目标Activity(接收者)的数据。接口定义如下: ```java public interface DataCallback { void onDataReceived(Object data); } ``` 然后,在源...
本文将深入探讨如何实现从一个Activity跳转到Fragment,以及如何从Fragment返回到另一个Activity。 首先,我们来看如何从一个Activity启动Fragment。在Android中,Fragment不能直接启动,它必须嵌套在Activity中。...
有时,我们可能需要在一个应用(应用A)中启动另一个应用(应用B)的Activity,这通常涉及到跨应用通信。本教程将深入讲解如何实现这个功能,并提供一个简单的示例。 首先,要从一个应用启动另一个应用的Activity,...
在Android开发中,Activity是应用组件的一种,它提供了一个屏幕,用户可以在其中进行交互。Activity的生命周期是管理Activity状态的一系列方法,确保在不同情况下能正确地保存和恢复用户的进度。在Activity生命周期...
本文将详细解析从一个Activity(Activity1)跳转到另一个Activity(Activity2),然后再返回到原Activity(Activity1)时,这两个Activity分别会经历哪些生命周期方法。 #### Activity1的生命周期变化 1. **...
在Android应用开发中,"动态设置启动的第一个Activity"是一个高级且实用的技术,它允许开发者根据特定条件或用户需求在运行时动态地改变应用程序的入口点。通常,AndroidManifest.xml文件中定义了应用的启动Activity...
一个任务是一个可以包含多个Activity的容器,它们按照添加的顺序形成一个回退栈。用户可以通过按设备上的返回键从栈顶Activity回退到栈中的前一个Activity,直到任务被清空或者用户手动关闭应用。 TaskStackBuilder...