2016-03-01 43 views
0

當創建一個片段時,建議在片段類中使用靜態方法來傳遞和包裝參數(s。this post)。開始一個活動作爲一個額外的意圖的最佳實踐

現在我想到了類似的開始活動的意圖。

f.e:

public class ItemDetailActivity extends AppCombatActivity { 

    public static final String ARG_PARAM1 = "param1"; 
    public static final String ARG_PARAM2 = "param2"; 

    public static void startAsIntent(Context context, String param1, int param2) { 
     Bundle extras = new Bundle(); 

     extras.putString(ARG_PARAM1, param1); 
     extras.putInt(ARG_PARAM2, param2); 

     Intent intent = new Intent(context, ItemDetailActivity.class); 
     intent.putExtras(extras); 

     context.startActivity(intent); 
    } 
} 

這是一個好主意?

+2

有什麼不妥的地方,我知道的。其他人則建議做同樣的事情。它的好處是可以在設置額外功能之前執行更多驗證(例如,檢查「B​​itmap」的大小,以便知道您不會超過1MB IPC事務限制)。 – CommonsWare

+1

我這樣做沒有問題。特別是如果Activity *需要*你傳入的參數。它明確地顯示了需要什麼,所以它更不容易混淆。 – DeeV

+1

我已經看到了這一點。我真的很喜歡它,如果有複雜的邏輯來填補額外的,否則需要重複多個地方。 –

回答

1

這是完全正確的,也許誤解是由於數據包必須由Activity接收而引起的。而現在,從某些API以前我們有片段,有時需要從Fragment中打開activity(併發送包含數據的包)。

0

您可以使用直接將數據傳遞給意向,捆綁用於片段盡其用,下面的例子

Intent intent = new Intent(context, ItemDetailActivity.class); 
intent.putString(ARG_PARAM1 ,value); 
intent.putInt(ARG_PARAM2 ,value); 

我希望幫助 入住這

+0

,但是我需要把一個序列化,所以我用了一捆。爲了向您展示一個示例,我更改了代碼並保留了該包。 –

相關問題