是创建新的活动更好还是只是创建不同的布局并替换现有的布局?

2023-11-29

由于我是 Android 新手,我现在正在思考什么是正确的做事方式。

目前,我正在编写的应用程序有 4 个不同的屏幕:

  • 屏幕 1 - 节点列表(主屏幕)
  • 屏幕 2 - 选项菜单、带按钮的表格布局
  • 屏幕 3 - 导航
  • 屏幕 4 - 有关版本等的文本详细信息

可以使用位于顶部的“标题”视图来导航这些屏幕。标题有 4 个不同的按钮:

+--------------------+
| menu with buttons  |
+--------------------+
|                    |
|                    |
|                    |
|  C O N T E N T     |
|                    |
|                    |
|                    |
+--------------------+

main.xml实际上只是一个 LinearLayout,它包含 header.xml 和内容,在这种情况下是 ListView 中的节点列表

选项.xml几乎是同一件事,它包括 headerxml,然后是一堆按钮......

...其他两个屏幕依此类推。

因此,当我按下顶部标题/菜单中的按钮之一时,内容应该切换到该屏幕。我的问题是:

  • 我应该为每个屏幕创建一个活动吗?我在谷歌上读到:
    一项活动为用户可以进行的一项集中工作提供了一个可视化用户界面。因此可以解释为我应该为每个屏幕使用一个活动。

  • 我是不是该not创建比启动更多的 Activity,然后当我想更改上面的“内容”时只需运行 setContentView(R.layout.whatever)


你可能应该使用一个单独的Activity对于每个屏幕;否则你需要最终跟踪哪个人View当前正在显示的状态,以及当用户切换到另一个窗口或有呼叫打入等时当前未显示的所有状态。

如果您只使用单独的组件,则可以更轻松地跟踪此状态Activity对于每一项功能。

如果您决定将所有内容都保存在一个中Activity但是,你可以看看TabActivity班级。然而,也有一些警告会阻止您Activity作为选项卡内容。

  • Android:为什么我不应该在选项卡内使用活动?

关于您的后续行动,遗憾的是您无法附上Intent直接到一个Button就像你可以用MenuItem通过 XML,但是你可以扩展Activity使用一些连接侦听器的代码来创建您自己的公共基类。

就像是:

public class BaseActivity extends Activity {
    protected View.OnClickListener mButtonListener;

    protected void setupHeaderButtons() {
        findViewById(R.id.header_btn_1).setOnClickListener(mButtonListener);
        // ...
        findViewById(R.id.header_btn_n).setOnClickListener(mButtonListener);
    }
}

public class FirstActivity extends BaseActivity {
    @Override
    public void onCreate(Bundle b) {
        super.onCreate(b);
        setContentView(R.layout.first_activity);

        // This needs to be done *after* the View has been inflated
        setupHeaderButtons();
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是创建新的活动更好还是只是创建不同的布局并替换现有的布局? 的相关文章

  • 带身份验证的 MediaPlayer RTSP 视频流

    我能够在未经授权的情况下从网络摄像机流式传输视频 但现在我需要在授权的情况下执行此操作 我发现很少有信息表明 Android 不支持 RTSP 身份验证 但我发现另一条信息表明 通过使用该方法添加标头 可以在 API 级别 14 中实现身份
  • getItemAtPosition() 未在列表视图中返回值

    我创建了一个自定义基本适配器类 用图像和文本填充列表视图 类的代码如下 public class ViewAdapter extends BaseAdapter private Activity activity private Strin
  • 检测正在插入的设备

    我希望能够检测设备是否已插入 我希望能够像查询连接状态一样进行查询 这可能吗 或者我是否需要创建一个监听电池事件的广播接收器 显然是ACTION BATTERY CHANGED http developer android com refe
  • 在 Android 中从互联网链接获取数据

    我正在制作一个带有 URL 的应用程序 asp 扩展名 我们向其传递所需的参数并使用 POST 方法获取一些字符串结果 关于如何实现这一目标有什么建议吗 UPDATED 实际上我有一个 net 链接 它接受一些 POST 参数并给我一个结果
  • 强制关闭导致HTTP实体可能不为空

    这里是发送数据 Http 的完整代码 asynctask private class MyAsyncTaskPupuk extends AsyncTask
  • 读取 Android 4.2 中的 APN?

    我有个问题阅读 APN在安卓v4 2中 是读 不是写APNS 它抛出一个安全异常 没有写入 APN 设置的权限 用户 10068 和当前用户都没有权限 进程有 android permission WRITE APN SETTINGS 相同
  • Android - 启用和禁用蓝牙 - SDK 3 (OS 1.5) - 以编程方式?

    我编写了代码来以编程方式启用和禁用各种功能 例如 Wifi 振铃模式 飞行模式 您将在电源切换小部件中看到的所有内容 我还没有找到如何做的一个是蓝牙 看来在 SDK level 3 OS 1 5 中没有漂亮的蓝牙管理器类 有没有人指出关于启
  • 收到“提供的 API 密钥已过期”。使用 Places API 时出错

    我已经从 Google 控制台为 Places API 密钥生成了服务器密钥 但每当我访问该服务时 我都会收到 提供的 API 密钥已过期 错误 我已尝试重新生成密钥 但仍然出现相同的错误 我遇到了同样的问题 但终于解决了 Google 地
  • android studio更新到3.0后任务执行失败

    当我更新 Android Studio 3 0 时 出现错误 unable to merge with dex 然后我添加了mutiDexEnabled true并且还添加了com android support multidex 1 0
  • Android 上 Java 库中的代码出现 NoClassDefFoundError

    我的用户经常遇到错误 应用程序在启动期间崩溃 当应该加载 MainActivity 时 VM 显然找不到该类 我不明白为什么 该应用程序的架构是 我的免费版和专业版都使用一个通用项目 不知道是否相关 请参阅下面的堆栈跟踪 有什么想法吗 ja
  • 带有内容提供商的小部件;无法使用ReadPermission?

    所以我刚刚为我的应用程序实现了一个小部件 它通过我的数据库从数据库获取数据ContentProvider 我在清单中定义了自己的读 写权限 声明我使用它们 似乎没有什么区别 并在内容提供程序中要求它们
  • 如何编写 adb jdwp + adbforward 脚本?

    我正在尝试使用命令行和脚本工具调试 Android 应用程序 我已经受够了 Android Studio 占用我的 CPU 要连接到我的应用程序 我需要adb jdwp获取 pid 然后adb forward tcp 8700 jdwp
  • 如何将您的终端与 Android 模拟器连接

    我尝试导航到 android 工具文件夹并输入 adb shell 命令 但它似乎不起作用 我的终端似乎只能识别命令的 adb 部分 并给我一条错误消息 我究竟做错了什么 通过键入列出所有连接的设备adb devices 检查是否列出了任何
  • Android Studio 停留在构建 gradle 项目信息上

    我正在使用 Android Studio 2 3 每当我尝试创建一个新项目或打开某个项目时 它都会卡在此时 正在构建 Gradle 项目信息 请建议我一些解决方案 它可能正在下载 Gradle zip 文件 e g Users user g
  • Android RxJava 2 JUnit 测试 - android.os.Looper 中的 getMainLooper 未模拟 RuntimeException

    我在尝试为正在使用的演示者运行 JUnit 测试时遇到 RuntimeExceptionobserveOn AndroidSchedulers mainThread 由于它们是纯 JUnit 测试而不是 Android 仪器测试 因此它们无
  • Android 报告“Error=Unable to find Instrumentation info for: ComponentInfo {}”

    stackoverflow 上有很多关于这个问题的主题 问题 例如错误 无法找到以下仪器信息 ComponentInfo https stackoverflow com q 21294945 513413 和其他网站 但使我的问题与其他网站
  • 安卓独立包

    我有一个很大的 UI 大约 20 25 个屏幕 我应该如何组织我的代码 我应该按功能分成不同的包吗 我是否应该为所有 UI 类创建一个包 然后创建子包进行组织 或者我不应该创建单独的包并组织到文件夹中 任何帮助将不胜感激 当您创建文件夹时
  • 如何为部分 Android 活动创建通用代码?

    我的申请中有 14 项活动 这 9 个活动中包含自定义标题栏和选项卡窗格 所以在这里我需要在一个地方编写这个通用代码 而不是在每个包含自定义标题栏和选项卡窗格代码的活动中编写冗余代码 即布局及其活动特定代码 有哪些可能的方法可以做到这一点
  • 找不到与给定名称“@style/Theme.AppCompat.Light”匹配的资源

    我已经研究这个问题几个小时了 从 github 下载存储库后 任何 xml 文件中的唯一错误是 No resource found that matches the given name style Theme AppCompat Ligh
  • 在android中测量不规则多边形的面积

    我正在开发一个应用程序 在其中我在地图上绘制多边形 并且我使用的地图不是谷歌 它的Mapsforge开源离线地图库 我可以通过将地理点转换为像素点来轻松在地图上绘制多边形 但在这里我想发现是不规则的多边形 为此我做了很多尝试 但它让我失败了

随机推荐

  • Java内存:Runtime.getRuntime().maxMemory()

    Runtime getRuntime maxMemory 显示哪个内存 是幸存者 伊甸园 旧的 永久的吗 它是堆的最大大小 它松散地基于 mx or Xmx命令行参数 但由于我不明白的原因 可以减少 1 5 它似乎并不完全相同 这不包括永久
  • 为什么我的函数在输入值大小中使用 Python 时间限制?

    我正在尝试创建一个测试命令的函数time在Python中 该函数应该采取m n作为参数并计算MODEXP a e p 其中 p 最多是素数生成器2 m第一种情况下的 e 是2 n在第二种情况下是2 n 1 a是小于p的随机正整数 这是我的代
  • 如何从u-boot启动Linux内核?

    我的 Linux 内核镜像uImage在我的U盘里 我想从 U Boot 启动它 还有设备树文件am335x evm dtb在我的U盘里 我所做的如下 U Boot usb start Re start USB USB0 scanning
  • Android - 蓝牙低功耗远程键盘和鼠标

    计划开发一款 Android 应用程序 允许用户通过蓝牙远程控制键盘和鼠标 我见过一些利用用户家庭网络的应用程序 但想了解一些蓝牙结构 这也将是我在 Android 中的第一个项目之一 并将帮助我学习使用 Android SDK 使用低功耗
  • 仅有时显示远程图像

    我维护一个本地 Intranet 站点 其中显示来自 IMDB com 的电影海报图像 直到最近 我只是让一个 perl 脚本下载我需要的图像并将它们保存到本地服务器 但这变成了一个巨大的空间占用 所以我想我可以简单地将我的网站直接指向 I
  • 让其他应用播放背景音乐

    我想添加其他应用程序 例如 Pandora 或 iTunes 的功能 以便在我的 Sprite Kit 游戏打开时继续播放音乐 我该怎么做呢 对于这个问题的宽泛性 我深表歉意 我只是找不到关于此的很多信息 设置你的AVAudioSessio
  • mysql 错误:超出每小时最大连接数

    我在同一域上为 WordPress 网站运行 php 脚本时遇到错误 Could not connect User abc has exceeded the max connections per hour resource current
  • pgAdmin:如何在输出中查看单元格中的完整值

    我有一个查询 它给我输出单元格中的大输出值 但问题是 为了阅读 我需要拖动列并查看值 在一定范围后 值不会显示 而是显示给我 复制该值后 我也无法获取整组值 Question 如何从输出中看到整组值 选项中有一个设置 Max charact
  • 我什么时候应该使用准备好的语句?

    本来我用的是mysql connect and mysql query做事 然后我学习了SQL注入 所以我正在尝试学习如何使用准备好的语句 我了解 PDO 类的准备和执行函数如何有助于防止 SQL 注入 仅当用户输入存储到数据库中时才需要准
  • 在最新的 Ember.js 构建中的 Ember.View 中定义应用程序模板

    我最近升级到了最新的 Ember js 版本 从 GitHub 页面构建 当使用新路由器时 此功能不再起作用吗 App ApplicationView Ember View extend template Ember Handlebars
  • Celery 和 Django - 没有名为“django”的模块

    我使用描述的说明here Python 2 7 和 Celery 3 1 17 在 celery py 中我有 一开始 from future import absolute import import os from celery imp
  • 使用 Ajax 通过模式上传文件

    我想使用 Ajax 通过模式上传文件 我怎样才能做到这一点 我的模式 div class modal fade in div class modal dialog div class modal content div class moda
  • ConnectionString 属性不打印连接字符串

    我正在尝试使用以下脚本获取数据库数据源的连接字符串 Analysis Server New Object Microsoft AnalysisServices Server Analysis Server connect server da
  • 使用 Xunit 进行.Net 核心测试

    这是我第一次编写测试用例 我并没有陷入困境 也不知道如何进一步进行 我有以下 API 在下面的示例中 我有 2 个端点想要执行测试 public class ValuesController Controller This interfac
  • 在 C# 中创建热点

    是否可以在 C 中创建热点 以便当鼠标位于某个区域时触发事件 您的标准 From 对象公开 OnMouseMove 事件 鉴于您没有任何控制热点的位置 您可以只处理该事件中的坐标 protected override void OnMous
  • Visual Studio 2015 中的向导中缺少 PostgreSQL 数据提供程序

    我花了一天时间尝试将 Entity Framework 6 SQL Server CE 迁移到 PostgreSQL 我已经很好地复制了数据库 但我似乎无法让数据提供程序正常工作 首先 我尝试了旧版 2 2 7 版本的 EF 提供程序 它不
  • com.google.android.maps.MapView ClassNotFoundException

    我正在尝试执行 google 地图活动 但收到 LogCat 错误并且我的应用程序崩溃了 我在注册 API 密钥时使用了 android 提供的编码 所以我不知道为什么它不起作用 我需要帮助解决这个问题 LogCat 08 10 11 04
  • 列表列表的唯一性

    我很好奇什么是唯一化此类数据对象的有效方法 testdata 9034968 ETH 14160113 ETH 9034968 ETH 11111 NOT 9555269 NOT 15724032 ETH 15481740 ETH 1548
  • 如何停止一个线程?

    当线程处于活动状态时 如何停止该线程 我已经给了喜欢 if thread isAlive thread stop 但方法 stop 已被弃用并引发异常 01 21 14 12 40 188 ERROR global 535 Deprecat
  • 是创建新的活动更好还是只是创建不同的布局并替换现有的布局?

    由于我是 Android 新手 我现在正在思考什么是正确的做事方式 目前 我正在编写的应用程序有 4 个不同的屏幕 屏幕 1 节点列表 主屏幕 屏幕 2 选项菜单 带按钮的表格布局 屏幕 3 导航 屏幕 4 有关版本等的文本详细信息 可以使