溫馨提示×

溫馨提示×

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

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

如何進行Activity的啟動與關(guān)閉

發(fā)布時間:2021-11-25 22:20:56 來源:億速云 閱讀:144 作者:柒染 欄目:開發(fā)技術(shù)

如何進行Activity的啟動與關(guān)閉,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

   一:啟動

   1:直接啟動  (startActivity)

   ◆首先聲明Intent對象指定啟動源及啟動目標,然后讓Intent對象作為startActivity方法的參數(shù)完成啟動。

   ◆實現(xiàn):

Intent i = new Intent(MainActivity.this,Act2.class);//啟動源,啟動目標
startActivity(i);   //直接啟動的方法

   2:攜值啟動 (startActivity)

   ◆首先聲明Intent對象指定啟動源及啟動目標,調(diào)用Intent對象的putExtra方法,以鍵值對的形式攜帶數(shù)據(jù),然后讓Intent對象作為startActivity方法的參數(shù)完成啟動

   ◆實現(xiàn):

   (1)主Activity

Intent i = new Intent(啟動源.this,啟動目標.class
);
                i.putExtra("鍵的名稱", "值");
                startActivity(i);

 (2)目標Activity

String val = getIntent().getStringExtra("鍵的名稱");//取得傳過來的值

   3:帶返回值的啟動 (startActivityForResult)

   在某些場景下,我們需要從A界面跳轉(zhuǎn)攜帶數(shù)據(jù)到B界面,在B界面做一些處理后,在帶著返回值回到A界面已完成相應(yīng)操作,這是我們需要帶返回值的啟動。

   ◆具體過程如下:

   (1)主Activity,創(chuàng)建Intent對象,指明啟動源及啟動目標

   (2)主Activity,調(diào)用Intent對象的putExtra方法,以鍵值對的形式攜帶數(shù)據(jù)

   (3)主Activity,調(diào)用startActivityForResult方法,參數(shù)有兩個,第一個為Intent對象,第二個為requestCode,為int類型,為了判斷是哪個界面觸發(fā)的動作

   (4)目標Activity,創(chuàng)建空的Intent對象,調(diào)用putExtra方法,以鍵值對的形式儲存數(shù)據(jù)

   (5)目標Activity,準備數(shù)據(jù),此時只是準備數(shù)據(jù),還沒有傳送,只有finish界面之后才觸發(fā)啟動。setResult方法,兩個參數(shù),第一個resultCode,標志是那個界面返回的結(jié)果,第二個參數(shù)Intent對象

   (6)目標Activity,終止目標Activity,finish方法執(zhí)行之后,出發(fā)了返回值啟動

   (7)主Activity,重寫onActivityResult方法,通過對參數(shù)值的比較,來執(zhí)行不同的操作

   ◆具體實現(xiàn)

   (1)主Activity通過按鈕實現(xiàn)返回值啟動

public class MainActivity extends Activity {
    private Button button;//聲明按鈕
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button = (Button) findViewById(R.id.button1);//根據(jù)id查找按鈕
        button.setOnClickListener(new OnClickListener() {//添加監(jiān)聽
                                                                                                                                 
            @Override
            public void onClick(View arg0) {
                Intent i = new Intent(MainActivity.this,Act2.class);//定義Intent對象,指明源于目標
                                                                                                                                     
                startActivityForResult(i, 1);       //帶返回值的啟動方式    
            }
        });
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch (requestCode) {//判斷是那個界面返回的動作
        case 1:
            switch (resultCode) {//判斷是哪個返回值
            case 1:
                System.out.println(data.getStringExtra("act2"));
                break;
            default:
                System.out.println("resultCode值不匹配");
                break;
            }
                                                                                                                                 
            break;
        default:
            System.out.println("requestCode值不匹配");
            break;
        }
        super.onActivityResult(requestCode, resultCode, data);
    }
                                                                                                                         
}

   (2)目標Activity

public class Act2 extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.act2);
        Intent i = new Intent();//空Intent對象
        i.putExtra("act2", "我是act2");//儲存數(shù)據(jù)
        setResult(1, i);//準備數(shù)據(jù)
        finish();//終止Activity
                                                                                                                     
                                                                                                                     
    }
}

   ◆結(jié)果:在控制臺輸出返回來的值

08-21 13:34:50.777: I/System.out(451): 我是act2

   二:關(guān)閉

   1:關(guān)閉自身(finish)

   finish方法用來當Activity完成所有任務(wù)且需要關(guān)閉的情況時調(diào)用。這個方法一旦被執(zhí)行,Activity將執(zhí)行生命周期中的onDestory方法,因此我們可以把資源回收的操作放在onDestory里,調(diào)用finish方法,間接的調(diào)用onDestory方法,已達到關(guān)閉Activity的目的。

   2:關(guān)閉其他Activity(finishActivity)

   finishActivity用來根據(jù)參數(shù)requestCode的值來決定關(guān)閉哪個Activity。能被該方法關(guān)閉的Activity可以有多個,但是這些Activity必須由帶返回值的啟動方式。

看完上述內(nèi)容,你們掌握如何進行Activity的啟動與關(guān)閉的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細節(jié)

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

AI