【问题标题】:How to change app theme from ordinary "Blank Activity" to "Master/Detail Flow"如何将应用程序主题从普通的“空白活动”更改为“主/从流程”
【发布时间】:2013-08-25 20:34:12
【问题描述】:

我有一个适用于基本主题“空白活动”的应用程序,我想做的是将其更改为“主/细节流”主题。我知道这将使我的应用程序在 android SDK 11 + (android 3.0 Honeycomb +) 上运行,这对我来说没问题。问题是我不知道从哪里开始,进行这种 BIG 转换的基本步骤是什么?我找不到任何例子来帮助我解决这个问题。我应该寻找什么。我相信这已经完成了,你至少能给我一些关于如何做到这一点的指导吗? 我的应用程序并不复杂,它使用活动、异步任务、数据库、自定义列表……它非常基础。我使用自定义列表来显示数据,当我点击它时,它会显示更多的细节,所以我想有什么比“主/细节流”更专业的方法来做到这一点。如果您有任何关于“主/详细流程”的教程,您可以联系我,这可能会有所帮助。

【问题讨论】:

  • 注意:我个人讨厌这种布局,侧面板无缘无故地占用了太多屏幕。我会考虑 DrawerLayout,链接:developer.android.com/training/implementing-navigation/…
  • @LuckyMe 谢谢,但这不是我想要的。
  • 我知道,这就是为什么我没有把它作为答案......
  • @LuckyMe 这两者根本不能互换。 DrawerLayout 旨在与一组固定的应用程序级导航项一起使用。主/明细流旨在显示项目列表和每个项目的详细信息(即电子邮件及其文本内容、文本消息及其消息内容等)。
  • 您会将DrawerLayout 用于平板电脑上的Gmail 应用吗?

标签: java android android-theme


【解决方案1】:

我有一个适用于基本主题“空白活动”的应用程序 我想做的是将其更改为主/详细信息流” 主题。

我认为改变应用程序流程比改变主题更合适。出现的两个明显问题是,为什么您突然想要进行此更改并确定您的应用程序在主/详细信息流中有意义?答案很可能是肯定的,但您仍然应该回答它们。

我知道这将使我的应用程序在 android SDK 11 + 上运行 (android 3.0 Honeycomb +),我没问题

我不明白为什么您的应用无法在具有新主/详细信息的版本上运行。

问题是我不知道从哪里开始,什么是基本的 进行这种大转换的步骤?我找不到任何帮助的例子 我解决了这个问题。我应该寻找什么。我确定这个 已经完成了,请你至少给我一些关于如何做的指点 这样做?

您尚未提供有关如何实现您的应用的详细信息。更改将围绕片段进行,因此一个大问题是当前的单窗格版本是否是使用片段框架构建的。

如果您的应用是使用片段构建的,那么进行更改应该不会太难。您需要:

  • 确定应将哪些部分(片段)组合到一个活动中(从您的旧部分中)以制作主/细节(当空间允许时)
  • 更改多窗格活动以适应新片段。这应该很容易做到,但这取决于每个片段所暴露的特征的大小。
  • 修改其余的活动(当应用程序不会在多窗格模式下运行时),这将是小的变化,因为活动将主要保持当前版本

如果您的应用不是使用片段构建的,那么我上面所说的仍然适用,但您还需要实际制作所需的片段来包装您的应用所具有的任何功能。这很可能会导致大的代码重构。

【讨论】:

  • 我更新了我的问题,看看。我明白这可能是一项艰巨的工作,但我愿意这样做
  • @user2443241 我已经看到了编辑。但是我不确定您希望找到什么样的教程。从编辑中我假设您现在没有片段,在这种情况下,您可能只想使用主/详细模板创建一个新项目,并开始从该模板项目提供的片段中的旧项目重构代码(片段)。这样您就可以轻松查看所需的连接。
  • 我已经在 Play 商店中有我的应用程序,我想将它作为我旧应用程序的更新,新项目可以吗?
  • @user2443241 是的,只要新项目具有完全相同的包名称,您就可以在新清单中增加(旧项目的)版本,并使用与您相同的证书签署新应用程序用于初始项目。
  • 好的,谢谢,我会试试的。我正在寻找的教程是“主/明细流”的教程,有一个很好的例子
【解决方案2】:

这里是关于 Android 中的 Master/Detail 模板的教程 - An Android Master/Detail Flow Tutorial

据我了解,您的应用程序已启动并正在运行 - 所以我不确定是否值得尝试重写它,除非您当然遇到了一些问题。 :) 一般来说,主/明细流程需要以下步骤:

  • 实施ListFragment 显示您的项目的基本信息
  • 实现Fragment,显示特定项目的详细信息
  • 为大型设备制作一个 xml 布局文件(例如,位于 layout-sw600dp 文件夹中)。在此布局中,您必须放置两个片段。
  • 编写此布局文件的通用版本(即同名但位于 layout 文件夹中的文件),其中仅包含 ListFragment。
  • 让您的活动处理来自ListFragmentonItemClick 事件。每次单击项目时,您都必须检查活动是显示两个片段还是仅显示ListFragment。如果两者都可见,则必须通知详细信息片段选择了新项目,以便它可以显示其数据。否则,您必须创建新的详细信息片段(当然可以重复使用它),将有关所选项目的一些信息传递给它(以便它可以显示项目的数据)并将ListFragment 替换为新的。

这是一个基本的概述,但应该足以让您对这个流程有所了解。如果您需要更多详细信息 - 请告诉我。 :)

【讨论】:

    【解决方案3】:

    主/详细流程和空白活动与您只想通过更改应用程序主题或应用程序基本主题来更改不同。如果您首先使用 UI 片段设计主/详细流模板,然后将您的空白活动与主模板进行必要的更改相结合,那就更好了。对于主/详细流程教程只需 google 即可,您会在那里找到很多示例。

    【讨论】:

      【解决方案4】:

      这里有一些来自 developer.android.com fragment-uiadaptui 的链接

      这些是关于片段的一些准则,但它们是使用主/详细信息应用程序告知的。

      别忘了查看第二个链接中作为示例提供的新闻阅读器应用程序。

      【讨论】:

        【解决方案5】:

        如果您拥有最新版本的 Android SDK,您应该能够创建一个新的 Android 应用程序,并且在此过程中您可以选择让向导为您创建一个 Master/Detail Flow 应用程序。它将创建一个基本的工作应用程序,以便您可以查看代码并理解必要的部分。

        然后,根据您的应用程序的简单程度,您可能希望将所有现有代码移至新应用程序,反之亦然。

        将发生的宏观变化:

        1. 将您当前的所有活动改为extend Fragment
        2. 您必须创建一个 FragmentActivity 来调用您的 Fragments。这基本上是样板代码,只是添加了片段的名称。
        3. 别忘了仔细检查您的清单!

        在您之前扩展 Activity 的转换片段中:

        1. 在需要上下文的任何地方,使用getActivty() 进行切换(或创建一个全局变量以便只调用一次)
        2. onCreate() 更改为

          public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
              mView = inflater.inflate(R.layout.fragment_signals, container, false);
              setHasOptionsMenu(true); // Add if you want to display a Menu
               // Your initiation code here
              return mView;
          }
          
        3. 如果您有菜单,请将其更改为

          public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
              inflater.inflate(R.menu.activity_main, menu);
              super.onCreateOptionsMenu(menu, inflater);
          }
          

        这就是基本应用程序。当你第一次将Activity改为Fragments时,会有很多错误。但是,它们都很容易修复。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-12-09
          • 1970-01-01
          • 1970-01-01
          • 2013-07-14
          • 1970-01-01
          相关资源
          最近更新 更多