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());
}