Android 中兩個Activity 之間的傳值問題
Android 中兩個Activity 之間的傳值問題
在Android項目中,有時需要一些全局的靜態(tài)變量來保存一些數(shù)據(jù),這樣在關(guān)閉賦值界面后,其他的頁面還可以調(diào)用這些數(shù)據(jù)。
但是我們知道,在Java中全局靜態(tài)變量(java中沒有全局變量這一個概念,但是java提供了public static關(guān)鍵字來實現(xiàn)一些類似于全局變量的關(guān)鍵字)都是在程序加載時就放人到內(nèi)存中,它是存儲在方法區(qū)里的。如果程序不結(jié)束,它將一直存在。這是會影響到系統(tǒng)的性能的。那么在android中可不可以不通過這種方式來傳遞值呢?
今天自己做了一個小demo,感覺還不錯:不通過全局靜態(tài)變量而實現(xiàn)兩個Activity之間傳遞數(shù)據(jù)。
一個SendActivity(保存數(shù)據(jù)的一方,或者是傳遞數(shù)據(jù)的一方),一個ReceiverActivity(使用數(shù)據(jù)的一方)為了簡單起見,每個Activity對應(yīng)的布局文件中都只有一個按鈕。
SendActivity的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(); //第一參數(shù)取的是這個應(yīng)用程序的Context,生命周期是整個應(yīng)用 //第二個參數(shù)是要跳轉(zhuǎn)的頁面的全路徑 intent.setClassName( getApplicationContext(), "com.example.testofdialog.ReceiveActivity" ); //Bundle類用作攜帶數(shù)據(jù),它類似于Map,用于存放key-value名值對形式的值 Bundle b = new Bundle(); b.putString("我是key", "這里就是你要傳遞的內(nèi)容了"); //此處使用putExtras,接受方就響應(yīng)的使用getExtra intent.putExtras( b ); startActivity(intent); // 關(guān)閉當(dāng)前頁面 System.exit(0); //無論是exit還是finish都是可以的 //SendActivity.this.finish(); } }); } }
ReceiveActivity的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) { //最后的參數(shù)一定要和發(fā)送方的相同,否則得到空值 String rString = getIntent().getExtras().getString("我是key"); Toast.makeText(ReceiveActivity.this, rString, Toast.LENGTH_SHORT).show(); } }); } }
這里只是介紹了兩個Activity之間的通過Intent傳值的,那么如果有三個Activity是依次顯示的,但是,第三個Activity需要用到第一個Activity中的值,這種方法是否還能夠發(fā)揮功效?是否還有其他更好的方法?
以上就是Android 兩個Activity 之間的傳值問題,如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關(guān)文章
Android中TextView局部變色功能實現(xiàn)
這篇文章給大家詳細講解了一下Android中TextView實現(xiàn)部分文字不同顏色的功能實現(xiàn)過程,有這方面需要的朋友們一起學(xué)習(xí)下吧。2017-12-12Android Studio報錯unable to access android sdk add-on list解決方案
這篇文章主要介紹了Android Studio報錯unable to access android sdk add-on list解決方案,本文通過多種方式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-03-03Android 開發(fā)中根據(jù)搜索內(nèi)容實現(xiàn)TextView中的文字部分加粗
最近遇到一個需求,需要做一個搜索功能。搜索的內(nèi)容需要加粗顯示。實現(xiàn)方法很簡單,下面通過本文給大家分享Android 開發(fā)中根據(jù)搜索內(nèi)容實現(xiàn)TextView中的文字部分加粗樣式,非常不錯,需要的朋友參考下2017-03-03Android輕量級存儲SharedPreferences?MMKV?Jetpack?DataStore方案
這篇文章主要為大家介紹了Android輕量級存儲SharedPreferences?MMKV?Jetpack?DataStore方案示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-08-08什么是Android靜默拍攝 Android靜默拍攝app制作方法
這篇文章主要告訴大家什么是Android靜默拍攝,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-03-03Android App開發(fā)中創(chuàng)建Fragment組件的教程
這篇文章主要介紹了Android App開發(fā)中創(chuàng)建Fragment的教程,Fragment是用以更靈活地構(gòu)建多屏幕界面的可UI組件,需要的朋友可以參考下2016-05-05Android 開發(fā)仿簡書登錄框可刪除內(nèi)容或顯示密碼框的內(nèi)容
本文通過實例代碼給大家分享android開發(fā)中模仿簡書登錄框可刪除內(nèi)容或顯示密碼框的內(nèi)容,非常不錯,具有參考借鑒價值,需要的朋友參考下吧2016-12-12