Android学习之使用startActivityForResult()和onActivityResult()进行跳转并返回数据

Activity A和Activity B,这时候,Activity A使用startActivityForResult()启动本页面,使用onActivityResult()系统方法接收,顾名思义,Activity B使用setResult()来设置一个RESULT_OK进行发送.

 

以下为实例

 

/**
* 主界面
*/
public class MainActivity extends Activity {

private static final int REQUEST_CODE = 1;

private Context context;
private TextView tv;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context = this;
initView();
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {//如果结果码等于RESULT_OK
if (requestCode == REQUEST_CODE) {
String result = data.getExtras().getString("result");
tv.setText(result);
}
}
}

//点击事件

private void initView() {
tv = (TextView) findViewById(R.id.textview_activity_main);
findViewById(R.id.button_activity_main).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivityForResult(new Intent(context, DemoActivity.class), REQUEST_CODE);//带上requestCode跳转
}
});
}

}
下面是Activity B:

/**
* DemoActivity
*
*/
public class DemoActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_demo);
initView();
}

private void initView() {
findViewById(R.id.button_activity_demo).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.putExtra("result", "你好,我是返回的数据");

//发送
setResult(RESULT_OK, intent);//设置resultCode
finish();
}
});
}

}

posted on 2019-07-04 09:19  带镐伤的土豆  阅读(233)  评论(0编辑  收藏  举报

导航