
/*
1.想要由被啟動的Activity取得回傳資料,那麼啟用端必須改用startActivityForResult ()方法來啟動Activity
2.被啟動的Activity端要回傳資料時,亦是使用putExtra ()方法設定name-value pair,之後再使用setResult()方法回傳資料
3.啟用端Activity必須實作onActivityResult ()方法來處理被啟動之A ctivity所回傳的資料 */ 1.來源_First.java /* //1.建立Intent物件 Intent myIntent = new Intent(); //2.藉由setClass()方法設定來源與目的地類別 myIntent.setClass(First.this, Second.class); //3.建立Bundle物件,利用putString(鍵值,資料)方法新增字串資料 Bundle bundle = new Bundle(); bundle.putString("HEIGHT", height.getText().toString()); bundle.putString("WEIGHT“, weight.getText().toString()); //4.使用Intenet物件的puExtras()方法,附加Bundle物件 myIntent.putExtras(bundle); //6.啟動活動 startActivity(myIntent); */
- package com.example.inten6_3;
- import android.os.Bundle;
- import android.app.Activity;
- import android.content.Intent;
- import android.view.Menu;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- import android.widget.EditText;
- import android.widget.TextView;
- public class First extends Activity {
- EditText et1,et2,et3;
- Button btn1;
- static final int SET_SECOND=1;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.first);
- et1=(EditText)findViewById(R.id.editText1);
- et2=(EditText)findViewById(R.id.editText2);
- et3=(EditText)findViewById(R.id.editText3);
- btn1=(Button)findViewById(R.id.button1);
- btn1.setOnClickListener(new OnClickListener(){
- @Override
- public void onClick(View v) {
- Intent i=new Intent();
- i.setClass(First.this, Second.class);
- Bundle b1=new Bundle();
- b1.putString("1", et1.getText().toString());
- b1.putString("2", et2.getText().toString());
- b1.putString("3", et3.getText().toString());
- i.putExtras(b1);
- startActivityForResult(i,SET_SECOND);
- }});
- }
- protected void onActivityResult (int requestCode, int resultCode, Intent data){
- super.onActivityResult(requestCode, resultCode, data);
- switch(requestCode)
- {
- case SET_SECOND:
- if(resultCode==RESULT_OK){
- Bundle b=data.getExtras();
- String s=b.getString("sum");
- TextView op=(TextView)findViewById(R.id.op);
- op.setText(s);
- }
- }
- }
- }
復制代碼
2.目的地_Second.java /*在目標活動可以呼叫Activity物件的getIntent()方法取得Intent物件, 然後呼叫Intent物件的getExtras()方法取得攜帶的Bundle物件*/
package com.example.inten6_3;
import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView;
public class Second extends Activity { Button btn2; String result; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.second); double n1,n2,n3,sum,avg; Bundle b2=this.getIntent().getExtras(); if(b2!=null){ n1=Double.parseDouble(b2.getString("1")); n2=Double.parseDouble(b2.getString("2")); n3=Double.parseDouble(b2.getString("3")); sum=n1+n2+n3; avg=sum/3; TextView output=(TextView)findViewById(R.id.output); output.setText(getString(R.string.s1)+n1+getString(R.string.s2)+n2+getString(R.string.s3)+n3 +"\n"+getString(R.string.s4)+sum+getString(R.string.s5)+avg); result=output.getText().toString(); } btn2=(Button)findViewById(R.id.button2); btn2.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { Intent reply=new Intent(); Bundle c=new Bundle(); c.putString("sum",result); reply.putExtras(c); setResult(RESULT_OK, reply); finish(); }}); } } IntentBundle_return.zip
|