3

我对 android 开发很陌生,我从一个简单的项目开始学习如何处理大部分基本 UI。

我使用过 ActionBarSherlock 和 ViewPageIndicator,总体而言,我创建的简单应用程序正在运行,但我仍然遇到一些奇怪的问题。让我描述一下:

  • 当我单击将带有 FragmentPageAdapter 的片段移动到其位置的按钮时,我分配给事务的过渡效果不会发生。只有当我返回(事务被添加回堆栈)并再次按下按钮时才会发生这种情况。
  • 如果我在单击按钮后返回,然后再次单击它,则会显示片段 - 但行为很奇怪并且会做各种奇怪的事情,例如,FragmentPageAdapter 认为它有 5 个页面而实际上是 3 个页面(那些额外的页面是只是空白,他们的标题也是)
  • 如果我单击按钮,然后更改设备的方向,应用程序崩溃 - 尝试调试它,但我得到了 android 框架内的一些代码。

我认为我遇到了所有这些问题,因为我在代码中的某个地方确实出错了。请帮助我理解我的问题,如果可以的话,请指出一些我无法阅读并理解我到底做错了什么的好做法或地方,以及我怎样才能以正确的方式做到这一点。

我将有问题的代码上传到这里:https ://code.google.com/p/mich-android-testapp/source/browse/trunk/TestApp/

我感谢你们的任何帮助!

4

1 回答 1

3

您的代码有几个问题很可能是您列出的问题的根源。

首先,您在正常活动(MainActivity)中声明一个静态片段(直接在 xml 布局中声明的),稍后您尝试在OnClickListener. 这不会很顺利,因为您不应该使用静态片段进行交易。相反,您应该放置一个容器布局,以便在其中以编程方式添加片段,如果您要对其进行操作(作为旁注,您应该尝试使用通用 id 进行替换事务,否则如果您忘记使用相同的确切 id在 BaseActivity 子类中你会遇到麻烦)。

第二个主要问题是您存储来自 的片段ViewPager并假设这些片段将始终是您将使用的片段。这将在配置更改后ViewPager自动重新创建片段时失败。

如果要使用嵌套片段,则getChildFragmentManager()必须FragmentPagerAdapterBasePagerFragment.

此外,不要使用普通方法将数据传递给片段,因为该数据不会在配置更改后保留下来(我指的是setPage()方法)。改用 a Bundle

解决此问题后,查看错误是否仍然出现。

于 2013-04-13T13:59:25.253 回答