Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android:兩個Activity之間通過Intent傳值

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

編輯:關於Android編程

在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中的值,這種方法是否還能夠發揮功效?是否還有其他更好的方法?   我還沒進行過實驗,我也不知道,希望大家可以自己動手試試,我也會繼續嘗試,會在以後給出答案。      
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved