静态活动生成器?

时间:2014-06-16 22:52:57

标签: android android-intent android-activity

在我看过的一些片段示例中,有一些静态方法可以从类中获取片段实例,而不需要传递变量。 This示例来自developer.android.com网站。

public static DetailsFragment newInstance(int index) {
    DetailsFragment f = new DetailsFragment();
    // Supply index input as an argument.
    Bundle args = new Bundle();
    args.putInt("index", index);
    f.setArguments(args);
    return f;
}

在过去,当将额外内容传递给新的活动时,我总是做以下事情。

Intent newActivity = new Intent(this, NewActivity.class);
newActivity.putExtra(NewActivity.extra_1, extra_value);
startActivity(newActivity);

其中NewActivity.extra_1是值的公共常量。

有没有理由不在片段中看到相同的构建器模式?我从来没有见过或者找不到任何答案。为什么不创建类似的东西:

public static Intent instance(Context c, String extra1, long extra2){
    Intent i = new Intent(c, NewActivity.class);
    i.putExtra(EXTRA_1, extra1);
    i.putExtra(EXTRA_2, extra2);
    return i;
}

然后电话变为:

startActivity(NewActivity.instance(this, extra1, extra2);

额外的常量不需要公开,如果Activity需要一个新的额外的,可以更改实例方法以便于重构,我认为它可以清理startActivity调用。

我这场比赛刚刚迟到了吗?

2 个答案:

答案 0 :(得分:1)

我也想知道同样的事情,我得出的结论是,这很可能是因为活动有点static;当然,它们仅仅意味着作为片段的容器(意图改变),关于表示层,以及作为另一个活动与它们所托管的片段之间的接口(种类)。我在我的问题上意识到:Is there a convention for creating, updating and passing data to Fragments or Activities in Android?

这样的事情:

  

片段(在现代UI上)是UI的最终部分,它保存显示的数据(虽然没有规则,但它只是一种常见的做法)。

但是最后,没有告诉你如何创建活动的规则,只是因为片段最常见的是基于数据的变化是在活动之间传递的,所以更容易关注建立片段而不是活动的方法。

答案 1 :(得分:0)

AndroidAnnotations框架为带注释的类生成Intent Builder。查看this example extras annotation和下面的构建器模式调用。