如何从一个被新启动的Activity中返回数据到原来的Activity中呢,这里我们用到startActivityForResult方法。假设我们有那么一个应用:在第一个Activity点击按钮后跳转到第二个Activity,而我们在第二个Activity中输入一个数在点击按钮后,返回到第一个Activity,而在第一个Acitivity的文本框中便能显示刚才在第二个中输入的数值。
1.在MainActivity中:
public void onClick(View v) {
int a = Integer.parseInt(editText.getText().toString());
int b = Integer.parseInt(editText2.getText().toString());
Intent intent = new Intent(MainActivity.this,OtherActivity.class);
intent.putExtra("a",a);
intent.putExtra("b",b);
startActivityForResult(intent,REQUESTCODE);
}
其中对REQUESTCODE的声明为:
private final static int REQUESTCODE = 1;
为什么这么声明现在还没搞很明白
Intent intent = getIntent();
int a = intent.getIntExtra("a", 0);
int b = intent.getIntExtra("b",0);
textView.setText(a+"+"+b+"= ?");
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent =new Intent();
int c = Integer.parseInt(editText.getText().toString());
intent.putExtra("c",c);
setResult(22,intent);
finish();
}
});
其中setResult(22,intent)中的22是一个resultCode是自己随意定义的,用于返回到原来Activity时判断是从哪个Activity返回的。
3.在MainActivity还要加入onActivityResult,也就是Activity返回数据后的操作:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == 22){
if(requestCode ==REQUESTCODE){
int c = data.getIntExtra("c",0);
textView.setText(String.valueOf(c));
}
}
}