android學習筆記之-利用Intent在多個Activity之間跳轉

DesignBox href="/Controls/PlainComboEditor/StyleLibary/DesignBoxStyle.css" type="text/css" rel="stylesheet"> href="/Controls/PlainComboEditor/StyleLibary/Highlighter.css" type="text/css" rel="stylesheet">

在網上查了好多關於這方面的資料和教程,東西倒是不少,但大多都是過時的版本。於是乎自己研究了下android的api

寫了個小例子 ,廢話不多說,先上代碼.



先寫一個HelloWorld0作爲第一個Activity:


  1. package android.gong.sample;


  2. import android.app.Activity;
  3. import android.content.Intent;
  4. import android.net.Uri;
  5. import android.os.Bundle;
  6. import android.view.View;
  7. import android.widget.Button;
  8. import android.widget.TextView;

  9. public class HelloWorld0 extends Activity{
  10.     int REQUEST_CODE=2;
  11.     @Override
  12.     protected void onCreate(Bundle savedInstanceState) {
  13.         super.onCreate(savedInstanceState);
  14.         setContentView(R.layout.main0);
  15.         setOneButton();
  16.         
  17.         
  18.         
  19.     }
  20.     
  21.     
  22.     public void setOneButton()
  23.     {
  24.         Button btn1 =  (Button)findViewById(R.id.btn0);
  25.         btn1.setOnClickListener(new View.OnClickListener(){

  26.             
  27.             public void onClick(View v) {
  28.                 Intent intent=new Intent();
  29.                 intent.setClass(HelloWorld0.this, HelloWorldActivity.class);//指定了跳轉前的Activity和跳轉後的Activity
  30.                 intent.setData(Uri.parse("one"));//向下一個Activity傳遞了string類型參數"one"
  31.                 startActivityForResult(intent, REQUEST_CODE);//以傳遞參數的方式跳轉到下一個Activity
  32.             
  33. //              startActivity(intent);//這種方式不能傳遞參數
  34. //              finish();//如果不結束,那麼這個Activity將被壓在下一個Activity之下
  35.             }
  36.             
  37.         });
  38.     }
  39.     
  40.     
  41.     
  42.     
  43.     /**由系統調用,捕獲下一個Activity的回傳參數*/
  44.     @Override
  45.     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  46.             if(requestCode==REQUEST_CODE)//請求碼
  47.             {
  48.                 if(resultCode==HelloWorldActivity.RESULT_OK)//返回碼
  49.                 {
  50.                     TextView tv = (TextView)findViewById(R.id.tv0);
  51.                     tv.setText(data.getDataString());
  52.                 }
  53.             }
  54.     }
然後寫一個HelloWorldActivity作爲第二個Activity,


  1. package android.gong.sample;

  2. import android.app.Activity;
  3. import android.content.Intent;
  4. import android.net.Uri;
  5. import android.os.Bundle;
  6. import android.util.Log;
  7. import android.view.View;
  8. import android.widget.Button;
  9. import android.widget.TextView;

  10. public class HelloWorldActivity extends Activity {
  11.     /** Called when the activity is first created.
  12.     @Override */
  13.     static int  RESULT_OK=1;
  14.     MyView myView;
  15.     public static HelloWorldActivity activity;
  16.     
  17.     Intent intent;
  18.     String result="";
  19.     
  20.     public HelloWorldActivity() {
  21.         activity=this;
  22.         
  23.     }
  24.     
  25.     
  26.     public void onCreate(Bundle savedInstanceState) {
  27.         super.onCreate(savedInstanceState);
  28.         setContentView(R.layout.main);
  29.         
  30.          intent=HelloWorldActivity.this.getIntent();
  31.         String tmp=intent.getDataString();
  32.         
  33.         
  34.          
  35.          TextView tv = (TextView)findViewById(R.id.tv);
  36.             tv.setText(tmp+"  /"one/"是由上一個Activity傳遞過來的," +
  37.                     "當按下Exit按鈕的時候,該Activity會向上個Activity返回/"one and two/"作爲參數," +
  38.                     "然後上一個Activity由系統調用onActivityResult(int requestCode, int resultCode, Intent data)" +
  39.                     "來捕獲該參數" );
  40.          
  41.         if(tmp!=null)
  42.         
  43.             result =    tmp+" and two";
  44.         else
  45.         {
  46.             result="intent can't work";
  47.             Log.i("helloworld","intent can't work");
  48.         }
  49.             
  50.         
  51.         
  52.         
  53.         set_main1Button();
  54.       
  55.         
  56.         
  57.     }
  58.     
  59.     public void set_main1Button()
  60.     {
  61.           Button btn1=(Button)findViewById(R.id.go);
  62.               btn1.setOnClickListener(new View.OnClickListener(){
  63.                 public void onClick(View arg0) {
  64.                     
  65.                     activity.setContentView(R.layout.main2);
  66.                     activity.set_main2Button();
  67.                 
  68.                 }
  69.                   });
  70.           Button btn2=(Button)findViewById(R.id.exit);
  71.          
  72.           btn2.setOnClickListener(new View.OnClickListener(){

  73.             public void onClick(View v) {
  74.             
  75.                 intent.setData(Uri.parse(result));
  76.                 HelloWorldActivity.this.setResult(RESULT_OK , intent);
  77.                 
  78.                 
  79.                 activity.finish();
  80.             
  81.             }
  82.               
  83.           });
  84.     }
  85.     
  86.     public void set_main2Button()
  87.     {
  88.             Button btn3=(Button)findViewById(R.id.back);
  89.             btn3.setOnClickListener(new View.OnClickListener(){

  90.                 public void onClick(View v) {
  91.                     activity.setContentView(R.layout.main);
  92.                     activity.set_main1Button();
  93.                     
  94.                 }
  95.                 
  96.             });
  97.             
  98.             Button btn4=(Button)findViewById(R.id.next);
  99.             btn4.setOnClickListener(new View.OnClickListener(){

  100.                 public void onClick(View v) {
  101.                     MyView mv = new MyView(activity);
  102.                     activity.setContentView(mv);
  103.                     
  104.                     
  105.                 }
  106.                 
  107.             });
  108.     }
這樣就可以實現

1.從HelloWorld0 帶着字符串參數"one"跳轉到 HelloWorldActivity,

2.HelloWorldActivity接收到參數"one"後處理成"one and two"返回給HelloWorld


以下是運行結果:




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章