Activity數據通信

1、Activity數據傳遞,從子activity獲取返回結果

若要從子activity獲取返回信息時,可調用以下activity方法:

public void startActivityForResult(Intent intent, int requestCode)

該方法的第一個參數爲intent,第二個參數是請求代碼。請求碼是先發送給子Activity,然後再返回給父activity的整數。當一個activity啓動多個不同類型的子activity,且需要判斷要區分消息回饋時,通常會用到該請求碼。

2.設置返回結果

實現子activity發送返回信息給父activity,有以下兩種方法可以供調用:

public final void setResult(int resultCode)
public final void setResult(int resultCode,Intent data)

通常來說,參數resultcode可以是以下兩個預定義常量的任何一個:

(1)Activity.RESULT_OK

(2)Activity.RESULT_CANCELED

結果碼總是會返回給父activity。在沒有調用setResult(...)方法情況下,如果用戶單擊了後退按鈕,父activity則會收到Activity.RESULT_CANCELED結果代碼。

3.返還intent

數據信息需要回送給父activity。我們可以創建一個Intent,附在extra信息後,調用Activity.setResult(int ,Intent)方法將信息回傳給父activity.

private void setAnswerShownResult(boolen isAnwerShown){
    Intent data=new Intent();
    data.putExtra(EXTRA_ANSWER_SHOWN,isAnswerShown);
setResult(RESULT_OK,data);
}

4.例子說明

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		System.out.print("frist activity is exe ");
		startActivityForResult(new Intent(this, SecondActivity.class), 1);
	}
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		// TODO Auto-generated method stub
		super.onActivityResult(requestCode, resultCode, data);
		Log.d("xq", "requestCode="+requestCode+"resultCode="+resultCode);
	}
	
}
如果SecondActivity如下:

public class SecondActivity extends Activity {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		System.out.print("SecondActivtiy is exe");
	}
}

按back鍵返回時,執行結果:requestCode=1resultCode=0


如果SecondActivity如下所示:

public class SecondActivity extends Activity {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		System.out.print("SecondActivtiy is exe");
		setResult(888);
	}
}

按back鍵返回時,執行結果:

requestCode=1resultCode=888

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