[android]startActivityForResult方法簡介

Activity1跳轉到Activity2,用startActivity();如果由Activity1跳轉到Activity2,需要再由Activity2回到Activity1呢?

可能有人說:那我在Activity2中再次使用startActivity()不就可以了,是的,但是startActivityForResult()能夠直接完成這項工作


Activity startActivityForResult(Intent intent,int requestCode)步驟:---requestCode--0--用此來做個標記,要求大於等於0

1)在源Activity中使用startActivityForResult()方法啓動目標Activity

2)在目標Activity中使用setResult()方法設置返回值,並調用finish()方法結束目標Activity

3)在源Activity中重寫onActivityResult()方法,獲得從目標Activity中返回的值


源Activity代碼:

public class MainActivity extends Activity {
	private Button button;

	private void setupView() {
		button = (Button) findViewById(R.id.button);
		button.setText("啓動TargetActivity");
	}
	
	public void doClick(View v){
		//啓動目標Activity
		Intent intent = new Intent(this,TargetActivity.class);
		intent.putExtra("name", "zhangsan");
//		startActivity(intent);
		startActivityForResult(intent, 0);
	}

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		setupView();
	}
	
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		// TODO Auto-generated method stub
//		super.onActivityResult(requestCode, resultCode, data);
		switch (resultCode) {
		case RESULT_CANCELED:
			Toast.makeText(this, "未正確返回結果.", Toast.LENGTH_LONG).show();
			break;

		case RESULT_OK:
			int age = data.getIntExtra("age", -1);
			if(age!=-1){
				Toast.makeText(this, "返回的年齡是:" + age, Toast.LENGTH_LONG).show();
			}
			break;
		}
	}
}


目標Activity代碼:

public class TargetActivity extends Activity {
	private Button button;
	private String name;
	private void setupView(){
		button = (Button)findViewById(R.id.button);
		button.setText("返回");
	}
	
	public void doClick(View v){
		//判斷姓名,根據姓名獲取對應的年齡
		int age = -1;
		if("zhangsan".equals(name)){
			age = 19;
		}else if("lisi".equals(name)){
			age = 20;
		}else if("wangwu".equals(name)){
			age = 30;
		}else{
			age = 18;
		}
		
		//創建intent對象,設置年齡爲附加參數
		Intent intent = new Intent();
		intent.putExtra("age", age);
		
		//設置返回值,將intent對象作爲數據返回到源Activity
		setResult(RESULT_OK, intent);
		finish();
	}
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		setupView();//初始化界面
		
		//獲取源Activity傳遞過來的姓名信息
		name = getIntent().getStringExtra("name");
		//如果未正確獲得姓名,則返回RESULT_CALCELED
		if(name==null){
			setResult(RESULT_CANCELED);
			finish();
		}
	}
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章