前阵子代码中有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也可以使用....
分享到:
相关推荐
通过StartForResult传递数据,支持3个页面.demo为页面1到页面2再到页面3;页面3提交数据后可以直接刷新页面1;如果页面3没有提交,点击返回还是会返回页面1,数据不刷新。
在android里,有4种activity的启动模式,分别为: “standard” (默认) “singleTop” “singleTask” “singleInstance” 在Android应用中, Activity是最核心的组件, 如何生成一个Activity实例, 可以选择不同的...
演示版第一个演示展示了该库的基本用法。 第二个展示了实现类似于Instagram应用程序的方式。 还显示了复杂的嵌套片段的用法演示。特征1.快速开发复杂的嵌套片段应用程序2.使用片段的堆栈视图对话框轻松调试3.添加...
提供统一的onLazyInitView()懒加载方法6、提供 Fragment转场动画 系列解决方案,动态更换动画7、提供Activity作用域的EventBus辅助类,Fragment通信更简单、独立(需要使用EventBusActivityScope库)8、支持SwipeBack...
使用RecyvlerView打造价格日历界面 使用说明: 日历跳转 单选日期: CalendarActivity.startForResult(activity, CalendarActivity.MODE.SINGLE.toNumber(), null, 0x1024); 往返日期: CalendarActivity....