Android 将片段功能代码放在哪里?
关于android开发中使用Android 将片段功能代码放在哪里?,android,android-fragments,android-activity,Android,Android Fragments,Android Activity,关于android开发中使用Fragments和Activitys的一般问题:动态加载到活动中的Fragments的功能代码的业务端在哪里?(即片段的OnClickListeners、OnCheckedChangedListeners、按钮逻辑方法……) 它们是属于片段类还是属于活动类?这可能取决于片段的功能有多少共同点,以及需要处理多少按钮,比如说按钮 我个人(这可能是最常见的做法)为每个片段分别处理onClick(…)事件,这意味着我让每个片段实现它自己的OnClickListener 此外
Fragment
s和Activity
s的一般问题:动态加载到活动中的Fragment
s的功能代码的业务端在哪里?(即片段的OnClickListener
s、OnCheckedChangedListener
s、按钮逻辑方法……)
它们是属于
片段
类还是属于活动
类?这可能取决于片段的
功能有多少共同点,以及需要处理多少按钮,比如说按钮
我个人(这可能是最常见的做法)为每个片段分别处理onClick(…)
事件,这意味着我让每个片段实现它自己的OnClickListener
此外,当通过活动处理所有内容时,可能并非所有对单击事件作出反应的组件都始终在内存中,并且可以通过findViewById(…)
访问这些组件,取决于当前显示的片段以及用户界面的构建方式。附加到片段的视图的所有GUI逻辑都应包含在片段本身中
因此,片段应尽可能独立
不过,如果需要,您可以基于片段GUI交互回调您的活动。这可以在片段内部轻松完成,如下所示:
@Override
public void onAttach(Activity activity) {
if (!(activity instanceof SherlockFragmentActivity)) {
throw new IllegalStateException(getClass().getSimpleName()
+ " must be attached to a SherlockFragmentActivity.");
}
mActivity = (SherlockFragmentActivity) activity;
super.onAttach(activity);
}
在这种特定情况下,获取对SherlockFragmentActivity的引用的原因是获得对支持菜单inflaterMacActivity.getSupportMenuInflater()
的访问权,因此,构造当然也可以用于从底层活动中获取信息。它们总是在片段类中,因为片段是android中的一种组件,我们可以重用它。如果我们将onclick和oncheckchanged放在活动中,那么重用该组件有什么意义
有关详细信息,请执行以下步骤:
获取有关片段以及如何处理它们的基本信息
用于处理多窗格片段
这取决于:
若片段可以处理自给自足(完整)的逻辑,那个么该代码可以由片段处理。e、 g.点击呼叫电话号码
若片段具有特定于活动的UI,那个么您希望在活动中添加侦听器。
e、 g.掌握详细信息视图,如电子邮件客户端,在平板电脑上,用户单击标题片段1,其中包含电子邮件标题列表,然后单击活动中的处理程序可以在活动中显示详细片段2
在所有您想要保持片段可重用的地方。在片段中。。。若片段可以和其他片段交互,那个么做一些交互接口,做实现这个接口的控制器类(为了简单起见,活动可以是控制器),并在控制器中进行交互。。。Fx你有ListFragment与goods做接口与方法goodSelected让这个片段有方法setOnGoodSelected。。。在fragment onListSelected中,您可以从接口调用goodSelected。。。现在活动可以实现这个接口了。。。还有一个