剛開始看郭大神的<<第一行代碼>>,實現以下里面的一些例子.Intent傳遞數據.
我們利用顯示的方式進行Intent的啟動.
1.啟動intent並輸入數據.
Intent intent=new Intent(MainActivity.this,TwoActivity.class
);
intent.putExtra("data", "hello two");
startActivity(intent);
2.接收數據.
Intent intent=getIntent();
Log.i("data", intent.getStringExtra("data"));
注.intent傳遞數據的方式是鍵值對的形式,所以我們要根據預鍵來取.這里我們傳遞的是一個String字符串,當然你也可以傳遞其他數據類型.不過取的時候我們要根據數據類型來使用不同方法取.如下(當然還有很多,以此類推).
intent.getIntExtra(name, defaultValue);
intent.getBooleanExtra(name, defaultValue);
3.返回數據
Intent intent1=new Intent(MainActivity.this,TwoActivity.class
);
intent1.putExtra("data", "hello two");
startActivityForResult(intent1, 1);
在這里我們使用的不是startActivity();而是startActivityForResult();,這是我們要返回數據,所以必須要一個用來識別返回數據的code.
Intent intent=getIntent();
data=intent.getStringExtra("data");
Log.i("data", data);
findViewById(R.id.btn_twolayout).setOnClickListener(new OnClickListener(
) {
@Override
public void onClick(View v) {
Intent intent=new Intent();
intent.putExtra("data1", data+"收到.");
setResult(RESULT_OK, intent);
finish();
}
});
接收並返回數據.setResult(RESULT_OK, intent);.然后我們使用finish();將當前的activity銷毀掉,返回上一個activity.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode==1) {
if (resultCode == RESULT_OK) {
Log.i("data1", data.getStringExtra("data1"));
}
}
super.onActivityResult(requestCode, resultCode, data);
}
最后我們重寫onActivityResult();方法,並判斷requestCode是否等於我們預先設定好的code,和resultCode是否等於RESULT_OK.
在onActivityResult();方法里帶有三個參數,分別是requestCode,我們在啟動活動時傳入的請求碼.resultCode,我們在返回數據時候傳入的處理結果.data,攜帶着返回數據的intent.
此外我們還有一個問題,如果我們不是通過預先設定好的按鈕返回上一個activity,而是通過back按鍵返回怎么辦?
@Override
public void onBackPressed() {
Intent intent=new Intent();
intent.putExtra("data1", data+"收到.");
setResult(RESULT_OK, intent);
finish();
}
這個時候我們可以通過重寫onBackPressed(); 方法來解決.這樣的話當我們按下back按鍵,就會去執行onBackPressed();方法中的代碼.
么么噠的效果圖 o.o 
