當我們在開發的時候,啓動活動的方法相信我們已經非常熟悉了,
首先通過 Intent構建出當前的“意圖”,然後 調用 startActivity()或 startActivityForResult()方法將活動啓動起來,
如果有數據需要從一個活 動傳遞到另一個活動,也可以藉助 Intent來完成。
假設 SecondActivity中需要用到兩個非常重要的字符串參數,在啓動 SecondActivity的 時候必須要傳遞過來,那麼我們很容易會寫出如下代碼:
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
intent.putExtra("param1", "data1");
intent.putExtra("param2", "data2");
startActivity(intent);
這樣寫是完全正確的,不管是從語法上還是規範上,只是在真正的項目開發中經常會有 對接的問題出現。
比如 SecondActivity並不是由你開發的,但現在你負責的部分需要有啓動SecondActivity這個功能,
而你卻不清楚啓動這個活動需要傳遞哪些數據。
這時無非就有兩 種辦法,一個是你自己去閱讀 SecondActivity 中的代碼,
二是詢問負責編寫 SecondActivity 的同事。
這樣會非常麻煩。
其實只需要換一種寫法,就可以輕鬆解決掉上面的窘境。
修改 SecondActivity中的代碼,如下所示:
public class SecondActivity extends BaseActivity {
public static void actionStart(Context context, String data1, String data2) {
Intent intent = new Intent(context, SecondActivity.class);
intent.putExtra("param1", data1);
intent.putExtra("param2", data2);
context.startActivity(intent);
}
}
我們在 SecondActivity中添加了一個 actionStart()方法,在這個方法中完成了 Intent的構 建,另外所有 SecondActivity中需要的數據都是通過 actionStart()方法的參數傳遞過來的,
然 後把它們存儲到 Intent中,最後調用 startActivity()方法啓動 SecondActivity。
這樣寫的好處在哪裏呢?
最重要的一點就是一目瞭然,SecondActivity所需要的數據全 部都在方法參數中體現出來了,
這樣即使不用閱讀 SecondActivity中的代碼,或者詢問負責 編寫 SecondActivity的同事,你也可以非常清晰地知道啓動 SecondActivity需要傳遞哪些數 據。
另外,這樣寫還簡化了啓動活動的代碼,現在只需要一行代碼就可以啓動 SecondActivity, 如下所示: button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
SecondActivity.actionStart(FirstActivity.this, "data1", "data2");
}
});
這樣,你編寫的每個活動都添加類似的啓動方法,這樣不僅可以讓啓動活動變得非常簡單,還可以節省不少你同事過來詢問你的時間。
日常小筆記