我有一个适用于基本主题“空白活动”的应用程序,我想要做的是将其更改为“主/细节流”主题。我知道这将使我的应用程序在Android SDK 11 +(android 3.0 Honeycomb +)上运行,这对我来说没关系。问题是我不知道从哪里开始,进行这种BIG转换的基本步骤是什么?我找不到任何帮助我解决这个问题的例子。我应该寻找什么。我相信这已经完成了,你能不能给我一些如何做到这一点的指针? 我的应用程序并不复杂,它使用活动,异步任务,数据库,自定义列表,......这是非常基本的。我使用自定义列表来显示数据,当我点击它时它会显示更多的细节,所以我想在比“主/细节流”更教授的事情中有更好的方法来做这件事。如果您有关于“主/细节流程”的任何教程,您可以将其与我联系起来,这可能有所帮助。
答案 0 :(得分:5)
我有一个适用于基本主题“空白活动”的应用程序 而我想做的是将其改为主/细节流程“ 主题。
我认为更改应用程序流程会比更改主题更合适。出现的两个显而易见的问题是,您为什么突然想要进行此更改并确保您的应用程序在主/详细信息流中有意义?答案很可能是积极的,但你应该回答它们。
我知道这将使我的应用程序在Android SDK 11 +上运行 (android 3.0 Honeycomb +),对我来说没关系
我不明白为什么你的应用程序无法使用新的主/详细信息在以下版本上运行。
问题是我不知道从哪里开始,基本是什么 这个BIG转换的步骤是什么?我找不到任何帮助的例子 我解决了这个问题。我应该寻找什么。我确定这一点 已经完成了,你能不能给我一些如何指针 这样做?
您尚未提供有关应用如何实施的详细信息。这种变化将围绕片段展开,因此如果使用片段框架构建当前的单一窗格版本,那么将会出现一个大问题。
如果您的应用是使用片段构建的,那么进行更改应该不会太难。你需要:
如果您的应用程序不是使用片段构建的,那么我上面说的内容仍然适用,但您还需要实际制作所需的片段来包装您的应用程序具有的任何功能。这很可能会导致大量的代码重构。
答案 1 :(得分:2)
以下是有关Android中主/明细模板的教程 - An Android Master/Detail Flow Tutorial。
据我所知,您的应用程序已启动并运行 - 所以我不确定尝试重写它是否值得,除非您遇到一些问题。 :) 通常,主/详细信息流需要执行以下步骤:
ListFragment
Fragment
,显示有关特定商品的详细信息layout-sw600dp
文件夹中)。在这种布局中,你必须放下你的碎片。layout
文件夹中的文件),该文件仅包含ListFragment。onItemClick
的{{1}}事件。每次单击某个项目时,您必须检查该活动是显示两个片段还是仅显示ListFragment
。如果两者都可见,则必须通知详细信息片段,选择新项目以便它可以显示其数据。否则你必须创建新的细节片段(当然你重复使用它),传递一些关于所选项目的信息(这样它可以显示项目的数据)并用新的替换ListFragment
。这是一个基本的概述,但它应该足以让你对这个流程有所了解。如果您需要更多详细信息 - 请告诉我。 :)
答案 2 :(得分:2)
以下是developer.android.com fragment-ui和adaptui
的一些链接这些是关于片段的一些指导原则,但是使用master / Detail应用程序告诉它们。
另外不要忘记在第二个链接中查看作为样本提供的新闻阅读器应用程序。
答案 3 :(得分:2)
主要/详细信息流和空白活动与您只想更改应用主题或应用基础主题所需的更改相同。如果您首先使用UI片段设计主/详细流模板,那么将更好,然后根据主模板对空白活动进行整合,进行必要的更改。对于主/细节流教程,只需google它,你会在那里找到很多例子。
答案 4 :(得分:2)
如果你有Android SDK的最新版本,你应该能够创建一个新的Android应用程序,在这个过程中你可以选择让向导为你创建一个Master / Detail Flow应用程序。它将创建一个基本的工作应用程序,以便您可以查看代码并了解必要的部分。
然后,根据您的应用程序的简单程度,您可能希望将所有现有代码移至新应用程序,反之亦然。
将发生的宏观变化:
extend Fragment
。在您之前扩展活动的已转换片段中:
getActivty()
切换(或创建一个全局变量,只调用一次)将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;
}
如果您有菜单,请将其更改为
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.activity_main, menu);
super.onCreateOptionsMenu(menu, inflater);
}
这就是基本应用程序。首次将“活动”更改为“碎片”时,会出现许多错误。但是,它们都很容易解决。