【问题标题】:How to convert many Activities into few Activity?如何将许多活动转换为少数活动?
【发布时间】:2017-01-05 05:26:22
【问题描述】:

我正在考虑构建基于问题图像和答案选项的 Android 应用程序。练习很少,每个练习大约有 50-60 个问题和答案。

我在想构建,每个问题都会有每个活动。但我知道这是错误的做法。我无法找到答案。

如果我将使用片段,那么可能会有很多片段文件。完全无法做出决定。

怎么办?如果有任何教程或视频,那将很有帮助,请提出您的建议。

【问题讨论】:

  • 使用带有少量片段的单个活动并从您的 API 调用中更新数据。
  • 您将只有很少的活动。对于每个问题,屏幕上的组件都是相同的,您无需为每个问题创建一个活动。
  • 使用寻呼机适配器 :)
  • Viewpager 不错
  • 您只需要创建 3 个文件。您的 MainActivity。 FragmentClass 和 FragmentPagerAdapter。然后创建一个片段列表。 List<Fragment> 在您的 MainActivity 中然后将每个问题设置为片段的参数并将此片段添加到列表中。然后将整个片段列表发送到 FragmentPagerAdapter。就是这样

标签: java android android-layout android-fragments


【解决方案1】:

您可以创建一个活动和一个片段。片段将有一个问题和用户选择的答案以及其余选项。您可以简单地使用新数据创建一个片段,即问题和答案并将其添加到 backstack(仅当用户可以编辑先前回答的问题时)。您可以参考此One Activity and all other Fragments 以获取一项活动和许多片段 此外,http://www.vogella.com/tutorials/AndroidFragments/article.html 将帮助您创建/了解如何在 android 中使用片段

【讨论】:

  • 我得到了什么,这意味着,你建议为每个问题制作几个片段,如果我有大约 150 个问题,那么会有 150 个不同的片段布局?这有道理吗?请详细说明。
  • 没有。只需创建一个获取数据的片段,即问题 ID。在片段中,使用问题 ID 获取问题、选项、正确答案等。基本上,只有 Question id 不断变化,从而重用相同的片段。您不必创建太多片段或布局。
【解决方案2】:

以额外的意图传递问题索引:

打电话

 Intent intent = new Intent(this, QuestionActivity.class);
 intent.putExtra("QuestionIndex", questionIndex);
 startActivity(intent);

在 QuestionActivity 中:

 @Override
 protected void OnCreate(Bundle savedInstanceState) {
     ....
     Intent intent = getIntent();
     int questionIndex = intent.getIntExtra("QuestionIndex", 0);

 }     

与问题相关的信息(图像资源 ID、文本资源 ID 等)可以保存在 QuestionActivity(只能在 Activity 中访问)或 Application 类(在任何地方都可以访问)中。

【讨论】:

  • 那答案呢,我应该放入另一个 Activity 文件还是应该使用 sqLite 数据库。我应该用什么来将每个问题与其对应的答案联系起来。
【解决方案3】:

您只需要 2 个活动和 1 个片段。 1 项活动以显示练习列表。 1个活动显示片段。 现在,当用户单击下一个按钮时,片段将有问题和答案,创建相同片段的新实例并传递下一个问题和答案的数据。 :)

【讨论】:

    猜你喜欢
    • 2018-11-06
    • 2013-09-12
    • 2023-03-11
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 2015-06-21
    • 1970-01-01
    相关资源
    最近更新 更多