【问题标题】:Load Activity with dynamic view and content in Android在 Android 中加载具有动态视图和内容的 Activity
【发布时间】:2013-11-08 20:14:13
【问题描述】:

我对 Android 开发非常陌生,我正在尝试找出实现以下目标的最佳方法:

我想要一个包含多个按钮的主菜单。这些按钮中的每一个都应该加载第二个 Activity 并将一些数据传递给这个 Activity。

Secondary Activity 应该显示一个在三个不同视图或活动之间切换的选项卡栏: 1. 为每个元素创建一个静态视图(主菜单上的按钮) 2. 包含一组与该元素关联的图像的图像库 3. 另一个包含动态内容的页面,例如地图和图像。

我的想法:为每个元素创建一个 json 文件并将该文件的名称传递给辅助活动,然后可以使用该数据创建视图。

问题:能否将layout.xml文件的名称存储为字符串然后加载?

那么解决这个问题的最佳实践是什么?

【问题讨论】:

    标签: android json dynamic view android-activity


    【解决方案1】:

    将您希望在第二个活动中显示的布局/视图的信息作为用于启动活动的意图的额外信息传递:

    Intent i = new Intent(FirstActivity.this, SecondActivity.class);
    i.putExtra("layout_identifier", 5);
    startActivity(i);
    

    然后在接收活动onCreate()中提取这个信息:

    Bundle b = getIntent().getExtras();
    int layout = b.getInt("layout_identifier", 0);
    switch (layout) {
    case 5:
        setContentView(R.layout.activity_second_layout5);
        break;
    

    请注意,传递的数据类型不一定必须是 int,您可以传递所有原语、字符串和称为 Parcelable (https://developer.android.com/reference/android/os/Parcelable.html) 的第三个选项,可以将其视为对象的容器。

    【讨论】:

    • 谢谢。传递一个json文件名仍然有意义吗?恐怕如果我不以某种方式外包这些数据,我的 FirstActivity.java 将会非常混乱。您对此有何看法?
    • 在 JSON 中执行可能有点矫枉过正,但这取决于需要传递给第二个活动的内容。我必须知道更多才能给你一个正确的答案。
    • 示例数据: 1. 视图名称 2. 一个可能包含 10 个图像名称的数组 3. 一个包含地理位置和一些 url 的数组。如果我必须在一个 Activity 中写所有这些内容大约 12 次,这可能会变得混乱。有什么建议吗?
    • 也许你应该传递列表,或者为这些元素创建一个容器类,然后在第二个活动中循环这些列表/容器?
    猜你喜欢
    • 2012-02-23
    • 2018-01-01
    • 2020-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多