读书人

StartForResult的根本用法

发布时间: 2012-07-20 10:38:30 作者: rapoo

StartForResult的基本用法

前阵子代码中有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() {@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也可以使用....

读书人网 >移动开发

热点推荐