Android 2個activity相互交互

在編程中,很多時候,不僅需要程序內部需要共享/傳遞數據(如同一個thread,或是不同的thread),不同程序之間(process)也經常需要共享數據。

在Linux系統中,我們經常用到的Linux命令,如"ls -al",其中"-al"是傳給application “ls”的輸入值,下面的數據是"ls"的輸出值。Linux下的不同程序間傳遞數據十分直接明瞭,而Android則不同。

$ ls -al
total 180972
drwxr-xr-x 1 K0402004 1049089         0 八月   16 14:58 ./
drwxr-xr-x 1 K0402004 1049089         0 八月    6 11:38 ../
-rw-r--r-- 1 K0402004 1049089  68425872 八月    3 16:46 gradle-2.10-all.zip
-rw-r--r-- 1 K0402004 1049089 116851656 八月    1 16:37 gradle-4.10.1-all.zip

對於Android而言,則採取不同的方式,採用"intent"進行交互。整理如下,

1. A程序呼叫B程序,並且傳遞數據給B數據

首先新建一個intent,然後把“Component”賦值給intent;如果要傳遞值,則放在“putExra”中;最後呼叫“startActivityForResult”

packageName = "com.xxx.sensor";
activityName = "com.xxx.sensor.IRSensorTest";
mTestItemComponentName = new ComponentName(packageName,activityName);

Intent intent = new Intent();
intent.setComponent(mTestItemComponentName);
intent.putExtra("TESTSTYLE", "Test");
intent.putExtra("LANGUAGE", "English");
startActivityForResult(intent, REQUEST_CODE);

2. Activity B則可以在onCreate()方法中獲得Activity A傳入的數據,

Intent intent = getIntent();
String testStyle = intent.getStringExtra("TESTSTYLE");
String language = intent.getStringExtra("LANGUAGE");

3. Activity B結束時,可以向Activity A傳入返回值,比如測試結果,

(Activity A在啓動Activity B的時候需要呼叫“startActivityForResult()”,而不能只呼叫“startActivity()”)

    public void returnWithResult(Activity curActivity, boolean isPass) {
        Intent intent = new Intent();
        intent.putExtra("result", isPass);
        curActivity.setResult(-1, intent);
        curActivity.finish();
    }

4. Activity A獲取從Activity B傳來的數據, 需要在方法“onActivityResult()”中獲取,

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
        if (data != null) {
            mReturnResult = data.getBooleanExtra("result", false);
        }
        。。。。

實際開發中,不同Activity之間的數據傳遞還是十分經常出現的,謹此記之。

 

 

 

 

 

 

 

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