草庐IT

Android Activity 与 View

coder 2023-12-13 原文

抱歉,我知道这个主题已经涉及了一些。我已经阅读了相关帖子,但仍然有点困惑。我正在开发一个应用程序,虽然原型(prototype)将有 3 个主屏幕,但最终会有几十个。每个屏幕将呈现动态变化的状态或接受用户输入。为了可视化,它的布局需要类似于 MS Word 或典型 PC 的布局。它的顶部有一个状态栏,底部有一个导航栏,所有屏幕都通用(对某些屏幕进行了细微调整,例如不同的图标),中间是我称之为需要更新的 View Pane 适用布局。

状态、导航栏和每个屏幕都在它们自己的布局 xml 文件中定义。对于我的第一次尝试,我只是使用了一个 ViewFlipper 并将 3 种屏幕布局加载到其中。然而,这意味着目前我有一个主要 Activity ,随着我继续添加屏幕,该 Activity 将无法维护。

  1. 我觉得每个屏幕布局都应该有一个关联的 Activity 类,该类了解如何控制该屏幕。我需要弄清楚如何将其动态加载到中心 Pane 中。但是我想我在另一篇文章中读到,使用多个 Activity 可能会消耗 CPU 和 RAM。
  2. 目前,我尝试将其中一个屏幕设为它自己的 Activity,然后通过创建 Intent 并调用 startActivity 将其从主 Activity 中启动。但是,这会导致新屏幕 Activity 驻留在主 Activity 之上。有趣的是,然后按下后退按钮取消了该 Activity 并使我返回到主界面。
  3. 到目前为止,我还没有想出如何设置一个不同的 Activity 控件来控制中心 Pane 中发生的事情。
  4. 如果我继续沿着多个 Activity 路径前进,我的主 Activity 是否应该继承自 ActivityGroup?
  5. 在这种情况下使用 View 类是否更适用?

我知道这是一篇很长的文章。我将不胜感激任何建议。 谢谢! 炭黑

最佳答案

正如您所注意到的,Android 将隐式跟踪任务中启动的一系列 Activity ,并且“后退”按钮结束最上面的 Activity ,重新激活下一个 Activity 。我建议您考虑一下用户可能希望后退按钮执行哪些操作,并按照这些方式将 Activity 分开。

我还没有玩过ActivityGroup,所以我不能在那里给你建议。如果您使用完全独立的 Activity ,则可以让它们都使用具有公共(public)导航/状态栏的相同“外壳”内容 View 。让父类(super class)或实用程序类从那里处理填充和管理。然后使用 LayoutInflater(您可以调用 getLayoutInflater())在中间填充特定于 Activity 的 View 。

如果您希望其中一个 Activity 具有多个屏幕,您最终可能仍会在中心槽中使用 ViewFlipper。同样,您希望在任何您希望用户能够“返回”的地方进行 Activity 转换;这也意味着您可能不希望在屏幕密切相关或属于同一逻辑事物的情况下更改 Activity 。 (您可以覆盖后退按钮的行为,但除非您有充分的理由,否则最好只安排应用程序,以便 Android 的基本设置有助于您的应用程序的 UI,而不是在交叉用途上工作。)

关于Android Activity 与 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3515840/

有关Android Activity 与 View的更多相关文章

  1. ruby-on-rails - Rails - 一个 View 中的多个模型 - 2

    我需要从一个View访问多个模型。以前,我的links_controller仅用于提供以不同方式排序的链接资源。现在我想包括一个部分(我假设)显示按分数排序的顶级用户(@users=User.all.sort_by(&:score))我知道我可以将此代码插入每个链接操作并从View访问它,但这似乎不是“ruby方式”,我将需要在不久的将来访问更多模型。这可能会变得很脏,是否有针对这种情况的任何技术?注意事项:我认为我的应用程序正朝着单一格式和动态页面内容的方向发展,本质上是一个典型的网络应用程序。我知道before_filter但考虑到我希望应用程序进入的方向,这似乎很麻烦。最终从任何

  2. ruby-on-rails - 渲染另一个 Controller 的 View - 2

    我想要做的是有2个不同的Controller,client和test_client。客户端Controller已经构建,我想创建一个test_clientController,我可以使用它来玩弄客户端的UI并根据需要进行调整。我主要是想绕过我在客户端中内置的验证及其对加载数据的管理Controller的依赖。所以我希望test_clientController加载示例数据集,然后呈现客户端Controller的索引View,以便我可以调整客户端UI。就是这样。我在test_clients索引方法中试过这个:classTestClientdefindexrender:template=>

  3. ruby-on-rails - 如何在我的 Rails 应用程序 View 中打印 ruby​​ 变量的内容? - 2

    我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby​​中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R

  4. ruby-on-rails - 如何在 Rails View 上显示错误消息? - 2

    我是rails的新手,想在form字段上应用验证。myviewsnew.html.erb.....模拟.rbclassSimulation{:in=>1..25,:message=>'Therowmustbebetween1and25'}end模拟Controller.rbclassSimulationsController我想检查模型类中row字段的整数范围,如果不在范围内则返回错误信息。我可以检查上面代码的范围,但无法返回错误消息提前致谢 最佳答案 关键是您使用的是模型表单,一种显示ActiveRecord模型实例属性的表单。c

  5. ruby-on-rails - 复数 for fields_for has_many 关联未显示在 View 中 - 2

    目前,Itembelongs_toCompany和has_manyItemVariants。我正在尝试使用嵌套的fields_for通过Item表单添加ItemVariant字段,但是使用:item_variants不显示该表单。只有当我使用单数时才会显示。我检查了我的关联,它们似乎是正确的,这可能与嵌套在公司下的项目有关,还是我遗漏了其他东西?提前致谢。注意:下面的代码片段中省略了不相关的代码。编辑:不知道这是否相关,但我正在使用CanCan进行身份验证。routes.rbresources:companiesdoresources:itemsenditem.rbclassItemi

  6. ruby-on-rails - 在 haml View 中重构条件 - 2

    除了可访问性标准不鼓励使用这一事实指向当前页面的链接,我应该怎么做重构以下View代码?#navigation%ul.tabbed-ifcurrent_page?(new_profile_path)%li{:class=>"current_page_item"}=link_tot("new_profile"),new_profile_path-else%li=link_tot("new_profile"),new_profile_path-ifcurrent_page?(profiles_path)%li{:class=>"current_page_item"}=link_tot("p

  7. ruby - Sinatra 找不到 View 目录 - 2

    我正在尝试以一种更类似于普通RubyGem结构的方式构建我的Sinatra应用程序。我有以下文件树:.├──app.rb├──config.ru├──Gemfile├──Gemfile.lock├──helpers│  ├──dbconfig.rb│  ├──functions.rb│  └──init.rb├──hidden│  └──Rakefile├──lib│  ├──admin.rb│  ├──api.rb│  ├──indexer.rb│  ├──init.rb│  └──magnet.rb├──models│  ├──init.rb│  ├──invite.rb│  ├─

  8. ruby-on-rails - 如何让 Rails View 返回其关联的操作名称? - 2

    我有一个非常简单的Controller来管理我的Rails应用程序中的静态页面:classPagesController我怎样才能让View模板返回它自己的名字,这样我就可以做这样的事情:#pricing.html.erb#-->"Pricing"感谢您的帮助。 最佳答案 4.3RoutingParametersTheparamshashwillalwayscontainthe:controllerand:actionkeys,butyoushouldusethemethodscontroller_nameandaction_nam

  9. ruby-on-rails - 如何从按钮或链接单击的 View 调用 Rails 方法 - 2

    基本上,我试图在用户单击链接(或按钮或某种类型的交互元素)时执行Rails方法。我试着把它放在View中:但这似乎没有用。它最终只是在用户甚至没有点击“添加”链接的情况下调用该函数。我也用link_to试过了,但也没用。我开始认为没有一种干净的方法可以做到这一点。无论如何,感谢您的帮助。附言。我在ApplicationController中定义了该方法,它是一个辅助方法。 最佳答案 View和Controller是相互独立的。为了使链接在Controller内执行函数调用,您需要对应用程序中的端点执行ajax调用。该路由应调用rub

  10. ruby-on-rails - 如何编写跨模型、 Controller 和 View 的 Rails mixin - 2

    为了减少我的小Rails应用程序中的代码重复,我一直致力于将我的模型之间的通用代码放入它自己的单独模块中,到目前为止一切顺利。模型的东西相当简单,我只需要在开头包含模块,例如:classIso这工作正常,但是现在,我将有一些Controller和View代码,这些代码也将在这些模型之间通用,到目前为止,我有这个用于我的可发送内容:#Thisisamodulethatisusedforpages/formsthatarecanbe"sent"#eitherviafax,email,orprinted.moduleSendablemoduleModeldefself.included(kl

随机推荐