Android學習-啟動服務startActivityForResult調用activity並覆寫onActivityResult()接收返回來的信息


  1、在調用另外一個activity時是為了得到返回來的值時,若選擇通訊錄時候進入通訊錄只是返回一個電話號碼等等,我們可以調用startActivityForResult();

    

     Intent intent=new Intent();
	intent.setAction("com.example.multiactivity.SecondActivity3");
	intent.addCategory("android.intent.category.DEFAULT");

	Bundle b=new Bundle();
	b.putString("name1", "zp");
	b.putString("name2", "db");
	intent.putExtras(b);
	startActivityForResult(intent, 0);  //0參數是請求碼,一般設為0,在調用多個activity時候請求碼用來標識是哪個請求返回的數據。

  2、通常是在點擊事件,如listview的item中點擊選擇了聯系人,就返回聯系人,即在被調用的activity里將數據存入intent,並調用finnish返回數據

         Intent in=new Intent();
		in.putExtra("name3", "cy");
		setResult(0, in);    //此處的0是結果碼,用戶可以給結果碼設定特殊的含義例如此處若是聯網操作,可以定義結果碼為200時候是返回連接成功,出現異常時候返回403 連接錯誤
		finish();

  3、在返回的activity里要覆寫onActivityResult(int requestCode, int resultCode, Intent data)方法,

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
	// TODO Auto-generated method stub
	
	super.onActivityResult(requestCode, resultCode, data);
	System.out.println("請求碼:"+requestCode);   
	System.out.println("結果碼:"+resultCode); //結果碼為返回時候設置的
	if(requestCode==0) //所有的返回數據的操作都是調用該函數完成,當多次調用activity返回的值時候,根據startActivityForResult時候設置的請求碼來處理
	{
	String st="1";
	if(data!=null)
	st=data.getStringExtra("name3");//data返回回來的數據,為第二個參數
	ed.setText(st);
	}
}

  

例如下圖的操作,點擊“選擇第一個聯系人”時將requestcode設為0,在點擊“選擇第二個聯系人”請求碼設為1,在onActivityResult(int requestCode, int resultCode, Intent data)方法里根據返回的requestCode來采取相應的操作,將相對應Edittext里的數據設為電話號碼。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM