前阵子代码中有Activity跳转回调传值的需求,用到了StartForResult。
代码 demo,三个Activity,A B C ,A是启动用,跳转到B,B带参数至C,C关闭后传值给B
Test Activity
package com.nico;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class Test extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn1 = (Button) findViewById(R.id.btn1);
btn1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Test.this,Test01.class);
startActivity(intent);
}
});
}
}
Test 01 Activity
package com.nico;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class Test01 extends Activity {
TextView txt2;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test01);
Button btn2 = (Button) findViewById(R.id.btn2);
txt2 = (TextView) findViewById(R.id.txt2);
btn2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(Test01.this, Test02.class);
intent.putExtra("name", "nicolas");
//101 是请求码,方便在onActivityResult方法内处理不同请求码返回的intent 请求码须>=0
startActivityForResult(intent, 101);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.v("Test","------------------------->");
String ss = data.getStringExtra("newname");
txt2.setText(ss);
}
}
Test02 Activity
package com.nico;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class Test02 extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test02);
Intent intent = getIntent();
String ss = intent.getStringExtra("myname");
Button btn3 = (Button) findViewById(R.id.btn3);
TextView txt3 = (TextView) findViewById(R.id.txt3);
txt3.setText(ss);
btn3.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent in = new Intent();
in.putExtra("newname", "dqcao+newname");
//-1为RESULT_OK, 1为RESULT_CANCEL..
// in 则是回调的Activity内OnActivityResult那个方法内处理
setResult(-1, in);
Log.v("Test","-------->"+Test02.this.getCallingActivity().getClassName());
finish();
}
});
}
}
有的时候在多图层的时候,并不好用,因为在接收的ACTIVITY内,其Activity的callingActivity为空,具体还未去理。
当然全局变量 Application也可以使用....
分享到:
相关推荐
在Android应用开发中,`Activity`是构成应用程序的基本单元,用于展示用户界面并处理用户交互。`StartForResult`是Android中的一个关键概念,用于在不同的`Activity`之间传递数据并进行交互。在这个特定的场景中,...
在android里,有4种activity的启动模式,分别为: “standard” (默认) “singleTop” “singleTask” “singleInstance” 在Android应用中, Activity是最核心的组件, 如何生成一个Activity实例, 可以选择不同的...
演示版第一个演示展示了该库的基本用法。 第二个展示了实现类似于Instagram应用程序的方式。 还显示了复杂的嵌套片段的用法演示。特征1.快速开发复杂的嵌套片段应用程序2.使用片段的堆栈视图对话框轻松调试3.添加...
这个Fragment使用了一个SparseArray 来存储请求与回调函数的对应关系,`startForResult()` 方法用于启动一个新的Activity并关联一个回调,而`onActivityResult()` 方法则根据请求码找到对应的回调并调用它。...
提供统一的onLazyInitView()懒加载方法6、提供 Fragment转场动画 系列解决方案,动态更换动画7、提供Activity作用域的EventBus辅助类,Fragment通信更简单、独立(需要使用EventBusActivityScope库)8、支持SwipeBack...
在`startForResult`方法中,使用`Intent`启动新的Activity并设置请求码: ```java private void startForResult(Result result) { Intent intent = new Intent(this, YourNativeActivity.class); ...
### 使用方法 要使用 `Android-Louvre`,首先需要在项目的 `build.gradle` 文件中添加依赖: ```groovy dependencies { implementation 'com.github.androidthemes:louvre:3.1.2' // 使用具体版本号替换 } ``` ...
`OnActResultEventDispatcherFragment` 中的核心方法包括`startForResult(Intent intent, ActResultRequest.Callback callback)` 和`onActivityResult(int requestCode, int resultCode, Intent data)`。前者用于...
在Android应用开发中,我们经常需要在不同的Activity之间传递数据并获取结果,这通常通过`startActivityForResult()`方法实现。然而,这个过程涉及到大量的样板代码,包括创建Intent、处理回调等,使得代码变得冗长...
使用RecyvlerView打造价格日历界面 使用说明: 日历跳转 单选日期: CalendarActivity.startForResult(activity, CalendarActivity.MODE.SINGLE.toNumber(), null, 0x1024); 往返日期: CalendarActivity....