startActivity(Intent intent):仅仅是从当前活动界面跳转到另外一个界面,之后两个界面之间不再有联系。若是想跳回当前页面,则必须再使用一次startActivity( )。
startActivityForResult(Intent intent, int requestCode):可以经当前活动界面认为是一个父窗体,要跳转的界面为子窗体,当子窗体关闭时,父窗体会执行onActivityResult()方法,并可以获取子窗体的返回值.
代码如下:
mainActivity:
其中点击btn_main_start1为启动startActivity(); 点击btn_main_start2为启动startActivityForResult()
public class MainActivity extends Activity implements OnClickListener {
private EditText et_main_message;
private Button btn_main_start1;
private Button btn_main_start2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化视图对象
et_main_message = (EditText) findViewById(R.id.et_main_message);
btn_main_start1 = (Button) findViewById(R.id.btn_main_start1);
btn_main_start2 = (Button) findViewById(R.id.btn_main_start2);
// 设置点击监听
btn_main_start1.setOnClickListener(this);
btn_main_start2.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if (v == btn_main_start1) {
// 1.创建Intent对象(显式)
Intent intent = new Intent(this, SecondActivity.class);
// 2.通过intent携带额外数据
String message = et_main_message.getText().toString();
intent.putExtra("MESSAGE", message);
// 3.启动Activity
startActivity(intent);
} else if (v == btn_main_start2) {
//1.创建Intent对象
Intent intent = new Intent(this, SecondActivity.class);
// 2.通过intent携带额外数据
String message = et_main_message.getText().toString();
intent.putExtra("MESSAGE", message);
// 3.启动Activity
int requestCode = 2;
startActivityForResult(intent, requestCode);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// 判断code
if (requestCode == 2 && resultCode == 3) {
// 从data中取出数据
String result = data.getStringExtra("RESULT");
// 显示
et_main_message.setText(result);
}
}
}
SecondActivity:
public class SecondActivity extends Activity {
private EditText et_second_message;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
et_second_message = (EditText) findViewById(R.id.et_second_message);
// 得到intent对象
Intent intent = getIntent();
// 通过intent读取额外数据
String message = intent.getStringExtra("MESSAGE");
// 显示到EditText
et_second_message.setText(message);
}
public void back1(View v) {
// 关闭当前界面
finish();
}
public void back2(View v) {
// 保存一个结果
int resultCode = 3;
// 准备一个带额外数据的intent对象
Intent data = new Intent();
String result = et_second_message.getText().toString();
data.putExtra("RESULT", result);
// 设置结果
setResult(resultCode, data);
// 关闭当前界面
finish();
}
}
其中点击btn_main_start1为启动startActivity();
点击btn_main_start2为启动startActivityForResult()