在網上查了好多關於這方面的資料和教程,東西倒是不少,但大多都是過時的版本。於是乎自己研究了下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
以下是運行結果: