原来很怀疑通过startActivityForResult启动两个Activity,在onActivityResult中会不会得到不同的结果,经测试,得到的是不同的结果,看来android对Activity的重用做了很多机制,只是我们不知道而已。
OnActivityResult.java :用来执行两个startActivityForResult的方法。
public class OnActivityResult extends Activity {
/** Called when the activity is first created. */
private Button mActivityButton1;
private Button mActivityButton2;
private TextView mResultView;
public static final int REQUEST_ACTIVITY1 = 1;
public static final int REQUEST_ACTIVITY2 = 2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mActivityButton1 = (Button)findViewById(R.id.startActivity1);
mActivityButton2 = (Button)findViewById(R.id.startActivity2);
mResultView = (TextView)findViewById(R.id.result);
mActivityButton1.setOnClickListener(new ActivityButton1ClickListener());
mActivityButton2.setOnClickListener(new ActivityButton2ClickListener());
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == RESULT_OK){
switch(requestCode){
case REQUEST_ACTIVITY1:
mResultView.setText("REQUEST_ACTIVITY1");
break;
case REQUEST_ACTIVITY2:
mResultView.setText("REQUEST_ACTIVITY2");
break;
}
}
}
class ActivityButton1ClickListener implements OnClickListener{
public void onClick(View v) {
// TODO Auto-generated method stub
Intent mIntent = new Intent();
mIntent.setClass(OnActivityResult.this, PublicActivity.class);
try{
OnActivityResult.this.startActivityForResult(mIntent, REQUEST_ACTIVITY1);
}
catch(ActivityNotFoundException e){
System.out.println("Exception = " + e.getMessage());
}
}
}
class ActivityButton2ClickListener implements OnClickListener{
public void onClick(View v) {
// TODO Auto-generated method stub
Intent mIntent = new Intent();
mIntent.setClass(OnActivityResult.this, PublicActivity.class);
try{
OnActivityResult.this.startActivityForResult(mIntent, REQUEST_ACTIVITY2);
}
catch(ActivityNotFoundException e){
System.out.println("Exception = " + e.getMessage());
}
}
}
}
PublicActivity:公用的Activity
public class PublicActivity extends Activity {
private Button mBackButton;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.public_activity);
mBackButton = (Button)findViewById(R.id.back_button);
mBackButton.setOnClickListener(new OnBackButtonClickListener());
}
class OnBackButtonClickListener implements OnClickListener{
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent();
Bundle bundle = new Bundle();
bundle.putString("result", "PublicActivity");
intent.putExtras(bundle);
setResult(RESULT_OK, intent);
finish();
}
}
}