升级/从多个活动意图迁移到单个ViewPager&片段

时间:2016-09-22 06:22:54

标签: android android-layout android-fragments android-activity android-viewpager

我曾经有3个活动,有3个布局。

1. HomeActivity.java (activity_home.xml)
2. HelpActivity.java (activity_help.xml)
3. SettingsActivity.java (activity_settings.xml)

每当我必须打开其他活动时,我都会使用overridePendingIntent使用动画幻灯片插入意图。通过这种方式,HomeActivity的所有变量都保留在其中,而HelpActivity的变量/方法本身也与SettingsActivity相同。我在其中使用了onCreate()来执行某些活动特定代码。并且,来自android:onClick="fetchSarcasm"的{​​{1}}正在activity_home.xml中调用指定的方法。所以,没有冲突。所有正常的事情,发生在AndroidProject中,有3个活动,并且使用意图相互切换,正如我想要的那样发生。

但是现在,我想迁移到ViewPager而不是幻灯片进入的意图转换。这样,只有一个Activity具有ViewPager的XML。此ViewPager及其FragmentPagerAdapter从3个类中获取扩展HomeActivity.java的页面,其中包含相对的XML布局。

我想问一下:我在哪里为FragmentonCreate()layoutView's onClick=""编写页面特定代码。因为,扩展onChangeListeners的3个类没有任何FragmentContext,并且它们在不同的布局中不响应findViewById()

我是否需要将三个活动的所有代码混合到一个包含ViewPager的活动中?如果是这样,这会使ViewPager活动非常繁重。并且,在每个代码点编写android:onClick="method"对所有页面来说都是荒谬的。第3页中的任何复选框(视图)在其他页面中变为空。

我知道这可能是一个愚蠢的问题。我花了将近4天的时间来尝试实现某些目标,但我做不到。另外,这只是我在android中的第二个月,所以我是新手。我不使用Action Bars,Tabbed Bars或Navigation Drawers。

如果您想要更多内容,我也可以在SO聊天中使用。

我只是想知道如何合并我在不使用ViewPager时所做的所有工作。

1 个答案:

答案 0 :(得分:1)

如果您只为每个Fragment阅读一次“偏好设置”,则可以将之前的Activity.onCreate()逻辑移至每个Fragment s onViewCreated()或{{1 }}。在那里阅读您的共享偏好设置并相应地设置您的复选框。

onCreateView()内的{p> Fragment不必在每次更改页面时重新创建。您可以使用ViewPager更改一次Fragment实例化的数量。

Fragment Lifecycles explained