Activity系列——使用Bundle交換數(shù)據(jù)

1. 常見的情景

我們一般會在一個Activity中使用Intent去啟動另一個Activity,當這兩個Activity需要傳遞一些數(shù)據(jù)時,就可以借助Intent來實現(xiàn),Intent就像一個郵遞員,我們只需將信封(就是Bundle)交給他,讓他幫我們送達即可。

2. 怎么使用

2.1 Intent郵遞員

我們有好多方式可以將信件(Bundle)給到Intent郵遞員,并且這個哥哥不僅可以幫你送信,給你捎個話也是可以的。那么先看下Intent咋用:

  • putExtras(Bundle data),寄信
  • putExtra(String name, Xxx value ),寫信太麻煩?捎個話就行,Xxx可以是int、long等各種數(shù)據(jù)類型

這個Intent送到信后,需要對方自己?。纯催@就是最后一公里問題啊),那么對方取件要有對應的方法才能取出,對應的方法:

  • Bundle getExtras(),取信
  • gettExtra(String name),報名字,給你話兒

2.2 Bundle 信封

我們寄信不會把信紙直接給郵遞員,一般我們都會先把它裝進信封(不然小秘密全被郵遞員看光光),這里的信封就是Bundle。我們需要把信紙裝進信封,這時就有許多方法可供選擇

  • putXxx(String key, Xxx value ),Xxx可以是int、long等各種數(shù)據(jù)類型
  • putSerializable(String key, Serializable value),傳送一個可序列化的對象

對方拿到信件后需要拆開信封看內(nèi)容,自然就有對應的方法

  • getXxx(String key )
  • getSerializable(String key)

2.3 看個例子

實現(xiàn)功能,Activity_A啟動Activity_B,并給B傳遞一個身高數(shù)值,由B將其在TextView上顯示。

發(fā)送方

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Bundle data = new Bundle();
        data.putFloat("height",185.3f);
        Intent intent = new Intent(MainActivity.this, myActivity.class);
        intent.putExtras(data);
        startActivity(intent);
    }

接收方

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Intent intent = getIntent();
        Bundle data = intent.getExtras();
        Float height = data.getFloat("height");
        show = findViewById(R.id.show);
        show.setText(height.toString());
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容