中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

activity返回值

發布時間:2020-07-04 01:45:07 來源:網絡 閱讀:351 作者:yym631 欄目:開發技術

Activity返回值


使用startActivity方式啟動的Activity和它的父Activity無關,當它關閉時也不會提供任何反饋。

 

可變通的,你可以啟動一個Activity作為子Activity,它與父Activity有內在的聯系。當子Activity關閉時,它會觸發父Activity中的一個事件處理函數。子Activity最適合用在一個Activity為其它的Activity提供數據(例如用戶從一個列表中選擇一個項目)的場合。

 

子Activity的創建和普通Activity的創建相同,也必須在應用程序的manifest中注冊。任何在manifest中注冊的Activity都可以用作子Activity。

 

啟動子Activity

 

startActivityForResult方法和startActivity方法工作很相似,但有一個很重要的差異。Intent都是用來決定啟動哪個Activity,你還可以傳入一個請求碼。這個值將在后面用來作為有返回值Activity的唯一ID。

 

下面的代碼顯示了如何啟動一個子Activity:

 

    private static final int SHOW_SUBACTIVITY = 1;

    Intent intent = new Intent(this, MyOtherActivity.class);

    startActivityForResult(intent, SHOW_SUBACTIVITY);

 

和正常的Activity一樣,子Activity可以隱式或顯式啟動。下面的框架代碼使用一個隱式的Intent來啟動一個新的子Activity來挑選一個聯系人:

 

    private static final int PICK_CONTACT_SUBACTIVITY = 2;

    Uri uri = Uri.parse(“content://contacts/people”);

    Intent intent = new Intent(Intent.ACTION_PICK, uri);

    startActivityForResult(intent, PICK_CONTACT_SUBACTIVITY);

 

返回值

 

當子Activity準備關閉時,在finish之前調用setResult來給調用的Activity返回一個結果。

 

setResult方法帶兩個參數:結果碼和表示為Intent的負載值。結果碼是運行子Activity的結果,一般是Activity.RESULT_OK或Activity.RESULT_CANCELED。在一些情況下,你會希望使用自己的響應代號來處理特定的應用程序的選擇;setResult支持任何整數值。

 

作為結果返回的Intent可以包含指向一個內容(例如聯系人,電話號碼或媒體文件)的URI和一組用來返回額外信息的Extra。

 

接下來的代碼片段節選自子Activity的onCreate方法,顯示了怎樣向調用的Activity返回不同的結果:

 

    Button okButton = (Button) findViewById(R.id.ok_button);

    

    okButton.setOnClickListener(new View.OnClickListener() {

        public void onClick(View view){

            Uri data = Uri.parse(“content://horses/” + selected_horse_id);

            Intent result = new Intent(null, data);

            result.putExtra(IS_INPUT_CORRECT, inputCorrect);

            result.putExtra(SELECTED_PISTOL, selectedPistol);

            setResult(RESULT_OK, result);

            finish();

        }

    });

 

    Button cancelButton = (Button) findViewById(R.id.cancel_button);

    

    cancelButton.setOnClickListener(new View.OnClickListener() {

        public void onClick(View view){

            setResult(RESULT_CANCELED, null);

            finish();

        }

    });

 

處理子Activity的結果

 

當子Activity關閉時,它的父Activity的onActivityResult事件處理函數被觸發。

 

重寫這個方法來處理從子Activity返回的結果。onActivityResult處理器接受好幾個參數:

 

? 請求碼

曾經用來啟動子Activity的請求碼。

 

? 結果碼

結果碼是由子Activity設置的,用來顯示它的結果。它可以是任何整數值,但典型的值是Activity.RESULT_OK和Activity.RESULT_CANCELLED。

 

如果子Activity非正常關閉或在關閉時沒有指定結果碼,結果碼都是Activity.RESULT_CANCELED。

 

? 數據

一個Intent來打包任何返回的數據。依賴于子Activity的目的,它可能會包含一個代表特殊的從列表中選擇的數據的URI。可變通的,或額外的,子Activity可以使用“extras”機制以基礎值的方式返回臨時信息。

 

下面的框架代碼實現了一個Activity中的onActivityResult事件處理函數:

 

    private static final int SHOW_SUB_ACTIVITY_ONE = 1;

    private static final int SHOW_SUB_ACTIVITY_TWO = 2;

    

    @Override

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

        super.onActivityResult(requestCode, resultCode, data);

        switch(requestCode){

            case (SHOW_SUB_ACTIVITY_ONE) :

            {

                if (resultCode == Activity.RESULT_OK){

                    Uri horse = data.getData();

                    boolean inputCorrect = data.getBooleanExtra(IS_INPUT_CORRECT, false);

                    String selectedPistol = data.getStringExtra(SELECTED_PISTOL);

                }

                break;

            }

            case (SHOW_SUB_ACTIVITY_TWO) :

            {

                if (resultCode == Activity.RESULT_OK){

                    // TODO: Handle OK click.

                }

                break;

            }

        }

    }


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

贵溪市| 西充县| 大冶市| 日土县| 江永县| 察雅县| 洛隆县| 渝北区| 华亭县| 遵义县| 永定县| 丰宁| 铜陵市| 乌什县| 临颍县| 湾仔区| 栖霞市| 家居| 屯昌县| 孟州市| 富川| 新泰市| 紫阳县| 嘉义县| 公主岭市| 江门市| 蓬溪县| 治多县| 葵青区| 兴和县| 藁城市| 贵德县| 庆阳市| 封丘县| 延吉市| 临汾市| 华安县| 南投市| 资源县| 突泉县| 余庆县|