在一些情况下,我们通过 A activity跳转到 B activity上,这时希望 A activtiy能从 B activity上得到一些返回值,这个时候我们就不能使用startActivity方法了,而是使用 startActivityForResult方法来完成我们的操作。
例如,我们希望完成下面一个功能,在MainActivity上,写上一个算术表达式,然后跳转到到第二个SecondActivity上,在这个Activity上将第一个Activity的表达式显示出来,然后我们可以输入我们的算术表达式结果,然后点击按钮,将这个结果值又返回给我们的MainActivity
- public class MyList extends Activity {
- private EditText editView;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- editView = (EditText) findViewById(R.id.et);
- Button bt = (Button) findViewById(R.id.bt);
- bt.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- Intent intent = new Intent(MyList.this, TestWidget.class);
- Bundle bundle = new Bundle();
- bundle.putString("text", editView.getText().toString());
- intent.putExtras(bundle);
- startActivityForResult(intent, 0);
- // finish(); //这句意思是关闭当前Activity,也就是说点返回键返回不到这个Activity了.
- }
- });
- }
- /**
- * 取到回传的值
- */
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- switch (resultCode) { // resultCode为回传的标记,我在B中回传的是RESULT_OK
- case RESULT_OK:
- Bundle b = data.getExtras(); // data为B中回传的Intent
- editView.setText(b.getString("text"));// 回传的值
- break;
- default:
- break;
- }
- }
- }
public class TestWidget extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list_items); Bundle bundle = getIntent().getExtras(); final EditText editView = (EditText) findViewById(R.id.et1);
editView.setText(bundle.getString("text")); Button bt = (Button) findViewById(R.id.bt1);
bt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(TestWidget.this, MyList.class); Bundle bundle = new Bundle();
bundle.putString("text", editView.getText().toString());
intent.putExtras(bundle); setResult(RESULT_OK, intent);
finish(); // 这句意思是关闭当前Activity,也就是说点返回键返回不到这个Activity了.
}
});
} }