一.onActivityResultActivity.java
主要的Activity,一会会先执行此Activity,然后调用B Activity,并向其发送数据,通过回调函数来获取B传回来的值。
public class onActivityResultActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
StartA();
}
public void StartA()
{
Button buttonA = (Button)findViewById(R.id.button1);
buttonA.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(onActivityResult.this,ClassB.class);
String passString = "Hello,this is A";
intent.putExtra("ToB", passString);
int resultCode = 0;
//发送回调请求
startActivityForResult(intent, resultCode);
}
});
}
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
String str=b.getString("FromB");//str即为回传的值
TextView view = (TextView)findViewById(R.id.textA);
view.setText(str);
//也可以在这里做额外的处理,比如回调别的信息。
break;
default:
break;
}
}
}
二.跳转的Activity
ActivityB.java
public class ActivityB extends Activity{
private Intent intent;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
intent = getIntent();
String result = intent.getStringExtra("ToB");
Button button = (Button)findViewById(R.id.button2);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(ActivityB.this, onActivityResultActivity.class);
String passString = "Hello,this is B";
intent.putExtra("FromB", passString);
//回调给onActivityResultActivity
setResult(RESULT_OK, intent);
finish();
}
});
TextView textView = (TextView)findViewById(R.id.textB);
textView.setText(result);
}
}
三.关键信息
switch (resultCode) { //resultCode为回传的标记,在B中回传的是RESULT_OK
case RESULT_OK:
Bundle b=data.getExtras(); //data为B中回传的Intent
String str=b.getString("FromB");//str即为回传的值
TextView view = (TextView)findViewById(R.id.textA);
view.setText(str);
break;
default:
break;
}