在网上查了好多关于这方面的资料和教程,东西倒是不少,但大多都是过时的版本。于是乎自己研究了下android的api
写了个小例子 ,废话不多说,先上代码.
先写一个HelloWorld0作为第一个Activity:
- package android.gong.sample;
- import android.app.Activity;
- import android.content.Intent;
- import android.net.Uri;
- import android.os.Bundle;
- import android.view.View;
- import android.widget.Button;
- import android.widget.TextView;
- public class HelloWorld0 extends Activity{
- int REQUEST_CODE=2;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main0);
- setOneButton();
- }
- public void setOneButton()
- {
- Button btn1 = (Button)findViewById(R.id.btn0);
- btn1.setOnClickListener(new View.OnClickListener(){
- public void onClick(View v) {
- Intent intent=new Intent();
- intent.setClass(HelloWorld0.this, HelloWorldActivity.class);//指定了跳转前的Activity和跳转后的Activity
- intent.setData(Uri.parse("one"));//向下一个Activity传递了string类型参数"one"
- startActivityForResult(intent, REQUEST_CODE);//以传递参数的方式跳转到下一个Activity
- // startActivity(intent);//这种方式不能传递参数
- // finish();//如果不结束,那么这个Activity将被压在下一个Activity之下
- }
- });
- }
- /**由系统调用,捕获下一个Activity的回传参数*/
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- if(requestCode==REQUEST_CODE)//请求码
- {
- if(resultCode==HelloWorldActivity.RESULT_OK)//返回码
- {
- TextView tv = (TextView)findViewById(R.id.tv0);
- tv.setText(data.getDataString());
- }
- }
- }
- package android.gong.sample;
- import android.app.Activity;
- import android.content.Intent;
- import android.net.Uri;
- import android.os.Bundle;
- import android.util.Log;
- import android.view.View;
- import android.widget.Button;
- import android.widget.TextView;
- public class HelloWorldActivity extends Activity {
- /** Called when the activity is first created.
- @Override */
- static int RESULT_OK=1;
- MyView myView;
- public static HelloWorldActivity activity;
- Intent intent;
- String result="";
- public HelloWorldActivity() {
- activity=this;
- }
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- intent=HelloWorldActivity.this.getIntent();
- String tmp=intent.getDataString();
- TextView tv = (TextView)findViewById(R.id.tv);
- tv.setText(tmp+" /"one/"是由上一个Activity传递过来的," +
- "当按下Exit按钮的时候,该Activity会向上个Activity返回/"one and two/"作为参数," +
- "然后上一个Activity由系统调用onActivityResult(int requestCode, int resultCode, Intent data)" +
- "来捕获该参数" );
- if(tmp!=null)
- result = tmp+" and two";
- else
- {
- result="intent can't work";
- Log.i("helloworld","intent can't work");
- }
- set_main1Button();
- }
- public void set_main1Button()
- {
- Button btn1=(Button)findViewById(R.id.go);
- btn1.setOnClickListener(new View.OnClickListener(){
- public void onClick(View arg0) {
- activity.setContentView(R.layout.main2);
- activity.set_main2Button();
- }
- });
- Button btn2=(Button)findViewById(R.id.exit);
- btn2.setOnClickListener(new View.OnClickListener(){
- public void onClick(View v) {
- intent.setData(Uri.parse(result));
- HelloWorldActivity.this.setResult(RESULT_OK , intent);
- activity.finish();
- }
- });
- }
- public void set_main2Button()
- {
- Button btn3=(Button)findViewById(R.id.back);
- btn3.setOnClickListener(new View.OnClickListener(){
- public void onClick(View v) {
- activity.setContentView(R.layout.main);
- activity.set_main1Button();
- }
- });
- Button btn4=(Button)findViewById(R.id.next);
- btn4.setOnClickListener(new View.OnClickListener(){
- public void onClick(View v) {
- MyView mv = new MyView(activity);
- activity.setContentView(mv);
- }
- });
- }
1.从HelloWorld0 带着字符串参数"one"跳转到 HelloWorldActivity,
2.HelloWorldActivity接收到参数"one"后处理成"one and two"返回给HelloWorld
以下是运行结果: