我正在使用创建一个应用程序,Fragments
其中一个创建了非默认构造函数,并收到以下警告:
Avoid non-default constructors in fragments: use a default constructor plus Fragment#setArguments(Bundle) instead
有人可以告诉我为什么这不是一个好主意吗?
您还能建议我如何做到这一点:
public static class MenuFragment extends ListFragment {
public ListView listView1;
Categories category;
//this is my "non-default" constructor
public MenuFragment(Categories category){
this.category = category;
}....
是否不使用非默认构造函数?
2
实例化一个新的Android片段的最佳实践的可能副本和stackoverflow.com/questions/10450348/…以及stackoverflow.com/questions/11602433/…以及可能还有其他的东西
—
CommonsWare,2012年
不,这些无济于事。他们没有回答我的问题。但是,还是谢谢你:)
—
BlackHatSamurai 2012年
@BlaineOmega实际上,这个问题尤其如此:stackoverflow.com/a/11602478/321697肯定会回答您的问题。在方向更改或其他导致重新创建Fragment的事件上,Android使用默认构造函数以及作为参数传递的Bundle。如果您使用的是自定义构造函数,则由于这些事件之一而重新创建该片段时,您在自定义构造函数中所做的任何操作都会丢失。
—
凯文·科波克
谢谢,但这回答了原因,但没有回答如何。
—
BlackHatSamurai'8
我的原始评论的第一个和第二个链接涵盖了这一点。
—
CommonsWare,2012年