★ Android基礎篇-你應該知道的ActivityForResult

爲什麼要使用ActivityForResult
當A頁面跳轉到B頁面,在B頁面進行一些修改操作,返回A頁面的時候,A頁面要更新在B頁面更改的數據.
使用 startActivity();已經完全不能滿足我們的需求了,所以startActivityForResult();這個方法就幫助我們解決類似的需求問題

startActivityForResult(Intent, int) A頁面

第一個參數:跟startActivity()的參數一樣,沒有特別要介紹的
第二個參數:請求碼Int類型的數字,大於0即可沒什麼特別的要求

setResult(int, Intent) B頁面

第一個參數:返回碼也是Int類型的,大於0即可,(個人建議請求碼返回碼不要相同)
第二個參數:依然是大家耳熟能詳的Intent,使用Intent爲了攜帶數據爲A頁面

onActivityForResult(int, int, Intent) A頁面

第一個參數:請求碼
第二個參數:返回碼
第三個參數:攜帶返回數據的Intent

看一下效果 別在意那些細節
這裏寫圖片描述

實現代碼
A頁面

  private void initData() {
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent();
                intent.putExtra("text1",et_text1.getText().toString());
                intent.putExtra("text2",et_text2.getText().toString());
                intent.setClass(MainActivity.this,NumberActivity.class);
                startActivityForResult(intent,100);
            }
        });
    }

B頁面

  private void initData() {
        tv_text1.setText(text1);
        tv_text2.setText(text2);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String s = et_k.getText().toString();
                Intent intent = new Intent();
                intent.putExtra("s",s);
                setResult(200,intent);
                finish();

            }
        });

最後回到A頁面 展示數據

   @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode ==100&&resultCode==200){
            String s = data.getStringExtra("s");
            tv_text.setText(s);
        }
    }

Demo地址
http://download.csdn.net/detail/macaopark/9914948

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章