【问题标题】:Why use Static Intent Methods in Android为什么在 Android 中使用静态 Intent 方法
【发布时间】:2016-09-27 20:24:55
【问题描述】:

我正在学习 android programming the big nerd ranch guide 这本书,其中作者编写了用于在活动之间传递数据的静态 Intent 方法,虽然我知道代码是如何工作的,但对它背后的逻辑和原因一无所知。

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

【问题讨论】:

  • 请编辑您的问题并提供minimal reproducible example 演示您不理解的代码。
  • @CommonsWare 我已经用书中提到的演示代码更新了答案,感谢您的指正
  • 你忘了告诉作者关于它的目标是什么。
  • @greenapps 他正在使用静态意图将数据传递给另一个活动。我认为这是一个非常大的目标:D
  • 你误会了。我们都知道意图是用来传输数据的。但我问创建意图的静态函数的目标是什么。所以首先你可以问为什么要为这些代码行创建一个函数?和往常一样,如果您经常需要结果,原因是代码行更少。为什么要让它成为静态的?能够轻松使用不同类的函数。

标签: android performance android-intent


【解决方案1】:

我假设你的意思是他编写的函数如下:

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

这样做的原因是为了显示 Activity 需要哪些参数才能工作,并拥有一个可以调用的函数来为该 Activity 创建一个 Intent,而不是必须在启动该 Activity 的十几个地方复制该逻辑应用中的活动。

【讨论】:

    【解决方案2】:

    我更喜欢 Android Studio 在您键入“starter”时生成的静态方法

    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);
    }
    

    【讨论】:

      【解决方案3】:

      从书本身:

      这个静态方法允许我们创建一个正确配置了 CheatActivity 所需的额外内容的 Intent。 answerIsTrue 参数是一个布尔值,使用 EXTRA_ANSWER_IS_TRUE 常量以私有名称放入意图中。您将立即提取此值。为您的活动子类使用这样的 newIntent(...) 方法将使其他代码更容易正确配置其启动意图。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-02-01
        • 1970-01-01
        • 2018-10-27
        • 2011-03-02
        • 1970-01-01
        • 2014-12-19
        • 1970-01-01
        • 2012-09-11
        相关资源
        最近更新 更多