本文共 2182 字,大约阅读时间需要 7 分钟。
您可以将片段看作活动的模块化部分,该活动有其自己的生命周期,接收自己的输入事件以及可以在活动运行时添加或删除的活动(有点像可以使用的“子活动”在不同的活动中重用)。本课介绍如何Fragment使用支持库扩展课程,使您的应用程序与运行系统版本低至Android 1.6的设备保持兼容。
您应该创建一个生命周期感知组件,而不是在您的Fragment的生命周期方法中设置依赖组件。该组件可以处理您的Fragment在其生命周期中移动时所需的任何设置或拆卸。生命周期感知组件随后可以在其他片段和活动中重用,以避免重复代码,并减少您在片段/活动本身中需要执行的设置。有关更多信息,请阅读 使用生命周期感知组件处理生命周期。
在开始本课之前,您必须设置Android项目以使用支持库。如果您之前没有使用过支持库,请 按照支持库设置文档设置您的项目以使用v4库。但是,您也可以在应用程序栏中加入应用程序栏,而不是使用与Android 2.1(API级别7)兼容的 v7 appcompat库,并且还包含API。Fragment
有关实施片段的更多信息,请参阅碎片。您还可以通过探索 相关示例应用程序来了解更多信息。
要创建一个片段,请扩展Fragment该类,然后覆盖键生命周期方法以插入您的应用逻辑,这与您对Activity类的方式类似。
创建一个区别的一个不同Fragment是您必须使用 onCreateView()回调来定义布局。事实上,这是您为了获得片段运行所需的唯一回调。例如,下面是一个简单的片段,它指定了它自己的布局:
import android.os.Bundle;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.ViewGroup;public class ArticleFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment return inflater.inflate(R.layout.article_view, container, false); }}
就像一个活动一样,一个片段应该实现其他生命周期回调,允许您在活动中添加或删除活动时以及活动在其生命周期状态之间转换时管理其状态。例如,当onPause()调用活动的方法时,活动中的任何片段也会收到一个调用onPause()。
有关片段生命周期和回调方法的更多信息可在Fragments开发人员指南中找到。
虽然片段是可重用的模块化UI组件,但Fragment类的每个实例都必须与父级关联FragmentActivity。您可以通过在活动布局XML文件中定义每个片段来实现此关联。
注意: FragmentActivity是支持库中提供的一项特殊活动,用于处理API级别为11以前的系统版本上的碎片。如果您支持的最低系统版本为API级别11或更高,则可以使用常规Activity。
以下是一个布局文件示例,当设备屏幕被视为“大”(由large目录名称中的限定符指定)时,会向活动添加两个片段。
res/layout-large/news_articles.xml提示:有关为不同屏幕尺寸创建布局的更多信息,请阅读支持不同的屏幕尺寸。
然后将布局应用于您的活动:
import android.os.Bundle;import android.support.v4.app.FragmentActivity;public class MainActivity extends FragmentActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.news_articles); }}
如果您使用的是v7 appcompat库,则您的活动应该扩展AppCompatActivity,这是它的一个子类FragmentActivity。有关更多信息,请阅读添加应用栏)。
注意:通过在布局XML文件中定义片段将片段添加到活动布局时,无法在运行时删除片段。如果您计划在用户交互过程中交换片段,则必须在活动首次启动时将片段添加到活动中,如下一课所示。
Lastest Update:2018.05.08
QQ:94297366
微信打赏:
公众号推荐:
转载于:https://blog.51cto.com/4789781/2122338