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

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