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

在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中的值,這種方法是否還能夠發揮功效?是否還有其他更好的方法?

 

我還沒進行過實驗,我也不知道,希望大傢可以自己動手試試,我也會繼續嘗試,會在以後給出答案。

 

 

 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *