2016-09-27 68 views
0

我正在學習android編程大書呆子牧場指南,其中作者編寫了用於在活動之間傳遞數據的靜態方法,儘管我知道代碼是如何工作的,但完全無法理解邏輯和背後的原因。爲什麼在Android中使用靜態方法

public static Intent newIntent(Context packageContext, boolean answerIsTrue){ 
    Intent i = new Intent(packageContext,CheatActivity.class); 
    i.putExtra(EXTRA_ANSWER_IS_TRUE,answerIsTrue); 
    return i; 
} 
+0

請編輯您的問題並提供[mcve]展示您不明白的代碼。 – CommonsWare

+0

@CommonsWare我已經用本書中提到的演示代碼更新了答案,並感謝您的更正 – Pheonix

+0

您忘記告訴作者有關其目標的信息。 – greenapps

回答

3

我假設你的意思是,他喜歡寫功能:

public static Intent createIntent(param1, param2) { 
    Intent intent = new Intent(); 
    intent.putExtra(param1); 
    intent.putExtra(param2); 
    return intent; 
    } 

之所以這樣做是爲了展示一下參數的活動需要工作,有一個單一的功能,你可以打電話爲該活動創建一個Intent,而不是必須在應用程序中開始活動的十幾個位置複製該邏輯。

0

從書本身:

這個靜態方法允許我們創建正確地與演員CheatActivity需要配置的意圖。使用EXTRA_ANSWER_IS_TRUE常量使用專用名稱將answerIsTrue參數(一個布爾值)放入intent中。你會暫時提取這個值。對你的活動子類使用這樣的newIntent(...)方法可以讓其他代碼很容易地正確配置其啓動意圖。

0

我寧願當你鍵入「啓動器」靜態方法的Android工作室產生

public static void start(Context context) { 
    Intent starter = new Intent(context, SomeActivity.class); 
    starter.putExtra(EXTRA_SOME_EXTRA, "some_extra_String"); 
    context.startActivity(starter); 
} 

然後你就可以擴展到指定到底哪個參數應成爲演員或什麼請求代碼。

public static void startForResult(Activity activity, String name, int requestCode) { 
    Intent starter = new Intent(activity, SomeActivity.class); 
    starter.putExtra(EXTRA_SOME_EXTRA, name); 
    activity.startActivityForResult(starter, requestCode); 
} 
相關問題