溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

activity請求碼與結(jié)果碼

發(fā)布時間:2020-07-25 03:40:47 來源:網(wǎng)絡(luò) 閱讀:389 作者:yym631 欄目:開發(fā)技術(shù)

void     startActivityForResult(Intent intent, int requestCode)

void     startActivityForResult(Intent intent, int requestCode, Bundle options)

void     onActivityResult(int requestCode, int resultCode, Intent data)

final void     setResult(int resultCode)

final void     setResult(int resultCode, Intent data)


    requestCode 請求碼,即調(diào)用startActivityForResult() 傳遞過去的值

    resultCode 結(jié)果碼,結(jié)果碼用于標(biāo)識返回數(shù)據(jù)來自哪個新Activity


二.請求碼的作用

    使用startActivityForResult(Intent intent, int requestCode)方法打開新的Activity,我們需要為startActivityForResult()方法傳入一個請求碼(第二個參數(shù))。請求碼的值是根據(jù)業(yè)務(wù)需要由自已設(shè)定,用于標(biāo)識請求來源。例如:一個Activity有兩個按鈕,點擊這兩個按鈕都會打開同一個Activity,不管是那個按鈕打開新Activity,當(dāng)這個新Activity關(guān)閉后,系統(tǒng)都會調(diào)用前面Activity的onActivityResult(int requestCode, int resultCode, Intent data)方法。在onActivityResult()方法如果需要知道新Activity是由那個按鈕打開的,并且要做出相應(yīng)的業(yè)務(wù)處理,這時可以這樣做:


     public void onCreate(Bundle savedInstanceState) {

            ....

        button1.setOnClickListener(new View.OnClickListener(){

            public void onClick(View v) {

                startActivityForResult (new Intent(MainActivity.this, NewActivity.class), 1);

            }

        });

        button2.setOnClickListener(new View.OnClickListener(){

            public void onClick(View v) {

             startActivityForResult (new Intent(MainActivity.this, NewActivity.class), 2);

            

            }

        }); 

                              

        @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {

            switch(requestCode){

                case 1:

                //來自按鈕1的請求,作相應(yīng)業(yè)務(wù)處理

                case 2:

                //來自按鈕2的請求,作相應(yīng)業(yè)務(wù)處理

            }

        }

    }

三.結(jié)果碼的作用

    在一個Activity中,可能會使用startActivityForResult()方法打開多個不同的Activity處理不同的業(yè)務(wù),當(dāng)這些新Activity關(guān)閉后,系統(tǒng)都會調(diào)用前面Activity的onActivityResult(int requestCode, int resultCode, Intent data)方法。為了知道返回的數(shù)據(jù)來自于哪個新Activity,在onActivityResult()方法中可以這樣做(ResultActivity和NewActivity為要打開的新Activity):

      

    public class ResultActivity extends Activity {

        .....

        ResultActivity.this.setResult(1, intent);

        ResultActivity.this.finish();

    }

    public class NewActivity extends Activity {

        ......

        NewActivity.this.setResult(2, intent);

        NewActivity.this.finish();

    }

    public class MainActivity extends Activity { // 在該Activity會打開ResultActivity和NewActivity

        @Override 

        protected void onActivityResult(int requestCode, int resultCode, Intent data) {

            switch(resultCode){

                case 1:

                // ResultActivity的返回數(shù)據(jù)

                case 2:

                // NewActivity的返回數(shù)據(jù)

            }

        }

    } 

上面的栗子說明,requestCode 和 resultCode都是返回提出請求的MainActivity結(jié)果處理函數(shù)onActivityResult()使用的標(biāo)識,只是requestCode 主要用來標(biāo)識是MainActivity也就是請求Activity發(fā)出的哪個請求,而resultCode則是標(biāo)識哪個Activity處理并返回的請求。

但是,無論requestCode 還是 resultCode都無法用于處理請求的Activity標(biāo)識是誰發(fā)出的請求。因此需要自行傳遞參數(shù)到處理請求的Activity。


向AI問一下細(xì)節(jié)
推薦閱讀:
  1. 機器碼
  2. 二維碼活碼php

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI