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

