我正在尝试设计我的应用程序并遇到一些问题。在开始阶段,我在不同的活动中编写所有内容,以确保每件事都有效。现在一切正常,我正在转向设计。我试图用片段代替活动。
我的问题是将活动中的代码复制到片段中,当我这样做时,我面临无数错误,findViewById
无法正常工作以及其他功能似乎集中在移动时无效的活动到片段。
我是否可以使用迁移技术将活动更改为碎片?或者我是否必须更改每个功能和错误以适应新的片段?
答案 0 :(得分:2)
没有迁移技术。您必须手动解决所有错误。作为一般概念,您可以这样做。
findViewById
的任何地方,现在都需要执行view.findViewbyId(R.id.view_id);
,其中view
是Fragment
内的虚增视图。Activity
上下文的功能都应以getActivity()
为前缀。this
还是MyActivity.this
之类的地方,都应将其替换为getActivity()
。答案 1 :(得分:1)
在Google或YouTube上查找有关如何使用Fragments
的基本教程以及Activities
作为开头的差异......
例如,findViewById
错误是因为在您的片段的onCreateView
方法中,在为您的片段充气后,看起来像这样:
View fragmentView = inflater.inflate(R.layout.fragment_host, container, false);
你需要使用我们刚刚发起的fragmentView
的findVyewById方法。像那样:
viewPager = (ViewPager) fragmentView.findViewById(R.id.pager);
如果使用Fragments
,通常NavigationDrawer
是一个很好用的组件(Toolbar
中有汉堡包图标的组件)。要实现这一点,请查看有关新NavigationView
和DrawerLayout
的教程。您需要design support library
,但这将在教程中解释。在托管此DrawerLayout
的主要活动的布局xml中,您有一个FrameLayout
,您可以在其中放置您应用内容的片段。< / p>