2016-09-27 70 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); 
} 
相关问题