[Basic Andriod 讀書會] 2.2.2 從Intents 回傳資料

摘要:[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();
            }
        }
    } 

 

http://www.plurk.com/SophieQ