草庐IT

Android - 如何制作带有 View 的复杂选项卡式应用程序

coder 2023-11-26 原文

关闭。这个问题需要更多focused .它目前不接受答案。












想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post .

2年前关闭。




Improve this question




Stack Overflow 上的第一个问题,如果格式不正确,请见谅。

我正在开发一个相对复杂的选项卡式应用程序,并且在遇到 ActivityGroup 和 TabActivity 已被弃用的信息之前已经设置了基础知识,并且首选模型是使用 View 。

我使用 View 没有问题,这是一个关于架构而不是语法的问题(这就是我没有发布任何代码的原因)。具体来说,我应该如何重构应用程序以使用 View 而不是 Intent 启动的 Activity 。

该应用程序有五个选项卡;两个保持单一布局,那里没问题。其他三个选项卡正在运行具有 2-5 个不同 Activity 的 ActivityGroup(即运行设置 Activity 的选项卡,单击每个 View 会启动一个处理该特定设置的新 Activity ,按后退按钮返回到更广泛的设置 Activity/ View )。如果我将每个 Tab 保留为 TabActivity,将这些内部转换更改为 View 而不是单独的 Activity 仍然相当容易。

主要问题是仅使用 View ,根本没有 TabActivity/Activity 组。我所做的绝大多数研究都在讨论是否使用 Activity 或 View ,或者关于特定语法。我一直无法清楚地了解如何在整个应用程序中实际转换到 View 。

  • 如果我这样做,整个应用程序现在不会在单个 Activity 中运行 - 托管选项卡式布局的 Activity 吗?
  • 如果(1)是真的,如何管理?尽管 ActivityGroup 已被弃用,但所有的 Android 文档似乎仍然声明最好将单独的 Activity 用于功能的不同方面——这是有道理的。 Android 开发团队是否只是简单地认为堆栈和设备的成本使 TabActivity 实现无效?
  • 如果应用程序运行在单个 Activity 中,该 Activity 管理每个选项卡的不同 View (然后在必要时在一个选项卡内管理不同的 View ),我是否应该有一个巨大的 onClick 方法来处理来自任何可点击 View 的所有点击,处理基于哪个 View 的输入? View 是否处于 Activity 状态?或者我应该以编程方式注册和取消注册我的所有监听器?
  • 使用单个 Activity,不会有任何点击监听器或任何广播接收器一直在运行,即使在不必要的情况下也会消耗资源吗?
  • 对于单个 Activity,后退按钮将从其功能的任何一点退出整个应用程序。如果我使用 View ,我是否必须始终覆盖 onBackPressed() 并仔细管理应用程序行为以强制其“像 Android 应用程序一样运行”?
  • 我在想这完全错误吗?当我应该采用完全不同的设计方法来使用选项卡和 View 时,我可能无意中尝试使用 View 重新创建 ActivityGroup 和 TabActivity 功能。

  • 当 Google 的人说我们不应该再将 Activity 用作标签时,并且马克墨菲先生非常同意,我倾向于相信。我只是无法研究一种切换方法,而无需求助于手动重新创建大量 Activity 功能(其中可能包括各种肮脏的黑客攻击)。

    提前感谢任何愿意解决如此模糊和被覆盖的主题的人。

    最佳答案

    使用 Fragments是执行选项卡式 ui 组件的新标准,我认为您一定忽略了它们,因为它们是上述所有问题的缺失部分。祝你好运。

    不要忘记使用兼容性库将 Fragment 支持带回 1.6。

    here是 Google 推荐的关于在 TabHost 中使用 Fragments 的简单教程。

    关于Android - 如何制作带有 View 的复杂选项卡式应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9103528/

    有关Android - 如何制作带有 View 的复杂选项卡式应用程序的更多相关文章

    1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

      我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

    2. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

      总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

    3. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

      关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

    4. ruby-on-rails - 如何验证 update_all 是否实际在 Rails 中更新 - 2

      给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru

    5. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

      我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

    6. ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言) - 2

      我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚

    7. ruby - 如何指定 Rack 处理程序 - 2

      Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack

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

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

    9. 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=>

    10. ruby - 如何每月在 Heroku 运行一次 Scheduler 插件? - 2

      在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/

    随机推荐