如何優雅的使用Intent(轉)

1 普通寫Intent的方法和缺陷

普通activity a要調用起activity b頁面會這么寫:

activity a

Intent intent = new Intent(a.this, b.class);

intent.putExtra("is_index", message);

startActivity(intent);

activity b

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

...

String is_index = getIntent().getExtras().getString("is_index");

...

}

上面的寫法是大多數Intent寫法,在發起方創建intent。但這種寫法在代碼量大大增加的時候會出現一個問題。當activity b在各種地方都會被調用起的時候,并且會傳入各種各樣不同的extra字段時,會發現很混亂,哪些發起方使用了哪些extra字段,每個字段什么意思,哪些是必須的等等問題。最終造成b代碼可讀性變差,讓以后想要調用起b的頁面也不清楚需要傳入哪些extra。

so,根據以上問題,無意間看到了google官方example代碼里一個使用intent的小技巧。


2 優化寫Intent

同樣是activity a要調用起activity b頁面的例子:

Intent intent = b.newIndexIntent(this, text);startActivity(intent);

activity b

privatefinalstaticString IS_INDEX ="is_index";@OverrideprotectedvoidonCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);? ? ...? ? String is_index = getIntent().getExtras().getString(IS_INDEX);? ? ...}.../**

* 創建intent

* is_index 是否是首頁跳轉過來的

*/publicstaticIntentnewIndexIntent(Context context, String message){? ? ? ? Intent newIntent =newIntent(context, b.class);? ? ? ? newIntent.putExtra(IS_INDEX, message);returnnewIntent;? ? }

用上面的方法可以保證所有extra全部定義在被調用起activity的內部,對外不可見,并可以對每個extra有詳細的注釋(是否必須、在什么地方調用)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容