Android:兩個Activity之間通過Intent傳值

來源:互聯網
上載者:User

在android項目中,有時需要一些全域的靜態變數來儲存一些資料,這樣在關閉賦值介面後,其他的頁面還可以調用這些資料。 但是我們知道,在java中全域靜態變數(java中沒有全域變數這一個概念,但是java提供了public static關鍵字來實現一些類似於全域變數的關鍵字)都是在程式載入時就放人到記憶體中,它是儲存在方法區裡的。如果程式不結束,它將一直存在。這是會影響到系統的效能的。那麼在android中可不可以不通過這種方式來傳遞值呢? 今天自己做了一個小demo,感覺還不錯:不通過全域靜態變數而實現兩個Activity之間傳遞資料。 一個SendActivity(儲存資料的一方,或者是傳遞資料的一方),一個ReceiverActivity(使用資料的一方)為了簡單起見,每個Activity對應的布局檔案中都只有一個按鈕。  SendActivity的java代碼[java]  public class SendActivity extends Activity {        @Override      public void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);                    setContentView(R.layout.activity_send);                    //擷取按鈕對象          Button btnSendButton = (Button)findViewById(R.id.btnSend);          btnSendButton.setOnClickListener(new OnClickListener() {                          public void onClick(View v) {                                    Intent intent = new Intent();                  //第一參數取的是這個應用程式的Context,生命週期是整個應用                  //第二個參數是要跳轉的頁面的全路徑                  intent.setClassName( getApplicationContext(), "com.example.testofdialog.ReceiveActivity" );                  //Bundle類用作攜帶資料,它類似於Map,用於存放key-value名值對形式的值                  Bundle b = new Bundle();                   b.putString("我是key", "這裡就是你要傳遞的內容了");                  //此處使用putExtras,接受方就響應的使用getExtra                  intent.putExtras( b );                    startActivity(intent);                  // 關閉當前頁面                  System.exit(0);                  //無論是exit還是finish都是可以的                  //SendActivity.this.finish();                                }          });        }  }    ReceiveActivity的java代碼[java] public class ReceiveActivity extends Activity {        @Override      public void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);                    setContentView(R.layout.activity_receive);                    Button btnReceiveButton = (Button)findViewById(R.id.btnReceive);          btnReceiveButton.setOnClickListener(new OnClickListener() {                       public void onClick(View v) {                                 //最後的參數一定要和發送方的相同,否則得到空值                  String rString = getIntent().getExtras().getString("我是key");                                    Toast.makeText(ReceiveActivity.this, rString, Toast.LENGTH_SHORT).show();              }          });      }  }   這裡只是介紹了兩個Activity之間的通過Intent傳值的,那麼如果有三個Activity是依次顯示的,但是,第三個Activity需要用到第一個Activity中的值,這種方法是否還能夠發揮功效?是否還有其他更好的方法? 我還沒進行過實驗,我也不知道,希望大家可以自己動手試試,我也會繼續嘗試,會在以後給出答案。   

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.