android Activity重用機制

來源:互聯網
上載者:User

原來很懷疑通過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();}}}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.