HGP*_*GPB 41 android android-fragments
嗨,我在Android网站上看下面的片段示例.
http://developer.android.com/guide/components/fragments.html#Example
我想知道为什么要执行某些方法.
例如,为什么detailsFragment执行以下方法:
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;
}
Run Code Online (Sandbox Code Playgroud)
您是否也可以简单地实例化DetailsFragment并使用setter方法来设置index.绕过整个setArguments.
setArguments首先使用的重点是什么?你能不能只使用二传手和吸气剂?
Mat*_*uno 38
您可以使用getter和setter,但是通过传入一个bundle,您不需要编写该代码,因为它已经存在.此外,我相信如果屏幕方向改变,这些参数会自动再次传入,这也使生活更轻松.
从本质上讲,setArguments和getArguments只是Google建议您遵循的设计模式:
每个片段都必须有一个空构造函数,因此可以在恢复其活动状态时进行实例化.强烈建议子类没有带参数的其他构造函数,因为在重新实例化片段时不会调用这些构造函数.相反,参数可以由调用者使用setArguments(Bundle)提供,稍后由Fragment使用getArguments()检索. http://developer.android.com/reference/android/app/Fragment.html
我认为这包括你的Fragment运行所需的setter.然后再说 - 没有什么可以强迫你这样做,而且正如你所知道的那样 - 这不是让事情成功的唯一方法.
sst*_*stn 24
只是为了补充Matthew的答案:他正确引用了Fragments需要一个空的构造函数,以便框架可以在需要时重新实例化它们.
使用getter和setter是好的,但是由于框架可能会破坏并重新创建Fragment,因此必须确保不丢失这些参数.
这必须通过Fragment.onSaveInstanceState().保存的规定将被传递给您的参数savedInstanceState中Fragment.onCreate(),Fragment.onCreateView()和其他一些方法.
使用Fragment.setArguments()is(在大多数情况下,我假设)更容易,在框架将自动保留参数,从而将为您完成大部分工作.
Setter可能是您最初提供给Fragment的参数以及片段可能随时间调整的方式.在这种情况下,单独处理savedInstanceState可能比处理savedInstanceState和arguments更容易 - 你必须做出决定哪个是有效参数.
public void setArguments (Bundle args)
Run Code Online (Sandbox Code Playgroud)
提供此片段的构造参数.这只能在片段附加到其活动之前调用; 也就是说,你应该在构造片段后立即调用它.这里提供的参数将在片段销毁和创建中保留 (可能是以前的官方文档中缺少粗体的文本)
Fragments.setArguments(Bundle args)
| 归档时间: |
|
| 查看次数: |
17611 次 |
| 最近记录: |