hellorheaven 发表于 2013-1-26 13:34:58

StartForResult的基本用法

前阵子代码中有Activity跳转回调传值的需求,用到了StartForResult。
 
代码 demo,三个Activity,A B C   ,A是启动用,跳转到B,B带参数至C,C关闭后传值给B
 
 
TestActivity
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() {@Overridepublic 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() {@Overridepublic void onClick(View v) {Intent intent = new Intent();intent.setClass(Test01.this, Test02.class);intent.putExtra("name", "nicolas");                                 //101 是请求码,方便在onActivityResult方法内处理不同请求码返回的intent 请求码须>=0startActivityForResult(intent, 101);}});    }@Overrideprotected 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. */@Overridepublic 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() {@Overridepublic 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也可以使用....
页: [1]
查看完整版本: StartForResult的基本用法