摘要:[Basic Andriod 讀書會] 2.2.2 從Intents 回傳資料
從Intents 回傳資料
情境:
在SecondActivity輸入文字之後,再回到FirstActivity中呈現在SecondActivity所輸入文字。
程式要點:
1. FirstActivity 的OnClick中,要改用startActivityForResult
public void onClick(View view) {
//startActivity(new Intent("com.example.SecondActivity"));
startActivityForResult(new Intent(
"com.example.SecondActivity"),
request_Code); // request_Code 要先宣告, 當你呼叫很多個Activity時,用這個值來identify現在回傳的是哪個Activity丟過來的值。如果request_Code =-1,則不會有回傳值,即等同使用startActivity
}
2. SecondActivity使用setResult回傳資料
public void onClick(View view) {
Intent data = new Intent();
//---從View中取出編輯的文字---
EditText txt_username = (EditText) findViewById(R.id.txt_username);
//---設定要回傳的文字---
data.setData(Uri.parse(
txt_username.getText().toString()));
setResult(RESULT_OK, data); //RESULT_OK的值會設給呼叫端的request_Code; data會回傳給呼叫端的intent物件
//---closes the activity---
finish();
}
3. FirstActivity接受回傳值。凡是calling side的activity都要實作 onActivityResult(),這是每個activity回傳時都會執行的。
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (requestCode == request_Code) { //(在呼叫多個activity的情況下)先確認目前回傳的Activity是你要處理的Activity
if (resultCode == RESULT_OK) {
Toast.makeText(this,data.getData().toString(),
Toast.LENGTH_SHORT).show();
}
}
}