原來很懷疑通過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 stubIntent 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 stubIntent 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 stubIntent intent = new Intent();Bundle bundle = new Bundle();bundle.putString("result", "PublicActivity");intent.putExtras(bundle);setResult(RESULT_OK, intent);finish();}}}