为了演示这个操作,我们需要两个 Activity : MainActivity 和 OtherActivity ,在 MainActivity 中通过 Intent 启动 OtherActivity ,并获得 OtherActivity 结束后返回的结果,例子仅作演示,为了方便,我直接在 Java 文件中定义了控件,就不写布局文件了。
MainActivity.java
代码如下 复制代码
packagenet.conw.intenttest;
importandroid.app.Activity;
importandroid.content.Intent;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.widget.Button;
importandroid.widget.EditText;
importandroid.widget.LinearLayout;
publicclassMainActivityextendsActivityimplementsView.OnClickListener {
privateEditText editText;
privateButton button;
publicstaticintREQUEST_CODE =1;
@Override
protectedvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout layout =newLinearLayout(this);
editText =newEditText(this);
button =newButton(this);
button.setText("Main");
button.setOnClickListener(this);
layout.addView(editText);
layout.addView(button);
setContentView(layout);
}
@Override
publicvoidonClick(View v) {
Intent intent =newIntent(this, OtherActivity.class);
intent.putExtra("text", editText.getText().toString());
startActivityForResult(intent, REQUEST_CODE);
}
@Override
protectedvoidonActivityResult(intrequestCode,intresultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == REQUEST_CODE && resultCode == OtherActivity.RESULT_CODE) {
editText.setText(data.getStringExtra("text"));
}
}
}
OtherActivity.java
代码如下 复制代码
packagenet.conw.intenttest;
importandroid.app.Activity;
importandroid.content.Intent;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.widget.Button;
importandroid.widget.EditText;
importandroid.widget.LinearLayout;
publicclassOtherActivityextendsActivityimplementsView.OnClickListener {
privateEditText editText;
privateButton button;
publicstaticintRESULT_CODE =1;
@Override
protectedvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout layout =newLinearLayout(this);
editText =newEditText(this);
button =newButton(this);
button.setText("Other");
button.setOnClickListener(this);
layout.addView(editText);
layout.addView(button);
setContentView(layout);
editText.setText(getIntent().getStringExtra("text"));
}
@Override
publicvoidonClick(View v) {
Intent intent =newIntent();
intent.putExtra("text", editText.getText().toString());
setResult(RESULT_CODE, intent);
finish();
}
}
整个代码的执行逻辑如下:
1、两个 Activity 的代码就是这样的, 当 MainActivity 中的 Button 被触发onClick()事件后,把 MainActivity 中的 EditText 的内容发给了 OtherActivity 。
2、OtherActivity 打开并初始化好控件后,把 EditText 的内容设置为 MainActivity 发过来的内容。
3、当 OtherActivity 中的 Button 被触发onClick()事件后,把 OtherActivity 中的 EditText 的内容返回给 MainActivity。