溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Android中怎么實(shí)現(xiàn)Activity 間的傳值

發(fā)布時(shí)間:2021-06-26 17:01:12 來源:億速云 閱讀:113 作者:Leah 欄目:移動(dòng)開發(fā)

今天就跟大家聊聊有關(guān)Android中怎么實(shí)現(xiàn)Activity 間的傳值,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

Android 中兩個(gè)Activity 之間的傳值問題

在Android項(xiàng)目中,有時(shí)需要一些全局的靜態(tài)變量來保存一些數(shù)據(jù),這樣在關(guān)閉賦值界面后,其他的頁面還可以調(diào)用這些數(shù)據(jù)。 

但是我們知道,在Java中全局靜態(tài)變量(java中沒有全局變量這一個(gè)概念,但是java提供了public static關(guān)鍵字來實(shí)現(xiàn)一些類似于全局變量的關(guān)鍵字)都是在程序加載時(shí)就放人到內(nèi)存中,它是存儲(chǔ)在方法區(qū)里的。如果程序不結(jié)束,它將一直存在。這是會(huì)影響到系統(tǒng)的性能的。那么在android中可不可以不通過這種方式來傳遞值呢? 

今天自己做了一個(gè)小demo,感覺還不錯(cuò):不通過全局靜態(tài)變量而實(shí)現(xiàn)兩個(gè)Activity之間傳遞數(shù)據(jù)。 

一個(gè)SendActivity(保存數(shù)據(jù)的一方,或者是傳遞數(shù)據(jù)的一方),一個(gè)ReceiverActivity(使用數(shù)據(jù)的一方)為了簡(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)的頁面的全路徑 
        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)前頁面 
        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(); 
      } 
    }); 
  } 
}

看完上述內(nèi)容,你們對(duì)Android中怎么實(shí)現(xiàn)Activity 間的傳值有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI