在我看过的一些片段示例中,有一些静态方法可以从类中获取片段实例,而不需要传递变量。 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调用。
我这场比赛刚刚迟到了吗?
答案 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和下面的构建器模式调用。