一、在啟動一個新的activity的時候可以通過Intent攜帶數據,通過Intent.putExtra()方法通過鍵值對的形勢裝入數據。在新啟動的activity中通過 getIntent()方法獲取啟動activity的Intent,並通過getxxxxExtra()獲取傳遞的數據。
二、如果希望被啟動的新activity返回數據,則需要使用startActivityForResult()啟動新的activity,方法攜帶兩個參數,第二個為請求碼,用於返回時判斷是由哪個activity返回的,另一個是Intent.需要重寫onActivityResult(int requestCode,int resultCode,Intent data)方法獲取返回的數據。在新的activity中通過setResult()方法設置要回傳的數據,該方法接收2個參數,第一個為返回碼,只能是RESULT_OK和RESULT_CANCELED這兩個值,第二個參數是一個攜帶數據的Intent,
調用finish()方法可結束當前activity。
示例代碼如下:
public class MainActivity extends Activity {
Button btn1;
TextView text1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text1 = (TextView) findViewById(R.id.text1);
btn1 = (Button) findViewById(R.id.button1);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String str1 = new String("我愛麥麥媽媽");
Intent intent =new Intent(MainActivity.this,SecondActivity.class);
intent.putExtra("dataSend",str1);
startActivityForResult(intent,1);
// startActivity(intent);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == 1){
text1.setText(data.getStringExtra("backString"));
}
}
}
public class SecondActivity extends Activity {
TextView text2;
Button btn2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second_activity);
Intent intent1 = getIntent();
String getString = intent1.getStringExtra("dataSend");
text2 = (TextView) findViewById(R.id.text2);
text2.setText(getString);
btn2 = (Button) findViewById(R.id.button2);
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intentTemp = new Intent();
intentTemp.putExtra("backString","北極熊愛企鵝");
setResult(1,intentTemp);
finish();
}
});
}
}