使用Extras和后退按钮问题调用相同活动的Android活动

时间:2015-07-29 23:33:58

标签: android arrays json android-activity android-recyclerview

这是关于Android活动的更多设计问题。

要点:

  1. 提供商在categoriesList数组列表中提供RecyclerView X项目
  2. CategoriesList读取数组列表并显示X项
  3. 用户点击具有子类别的项目
  4. 提供商使用Y项覆盖categoriesList数组列表
  5. CategoriesList读取数组列表并显示Y项
  6. 单击后退按钮可在新的CategoriesList活动中显示X项目
  7. 由于数组现在有Y项,因此会抛出错误或显示错误的项目
  8. 长版:

    我在JSON文件中有类别,每个类别都有单独的JSON文件中的文章。在主要活动“CategoriesList”中,初始化ArticleProvider,从“main_categories.json”文件中读取类别,并向用户显示列表。

    根据所选类别,我使用Extras将所选类别传递给下一个活动(“ArticleList”),并显示文章列表。

    现在我决定创建子类别。所以CategoriesList调用CategoriesList并使用extras我读取一个新文件而不是“main_categories.json”,并显示新的子类别列表。当我输入子类别时,将显示该子类别的文章列表。

    我的问题是,当我从子类别CategoriesList中单击后退按钮时,它会一直返回到第一个屏幕,而RecylerView会显示主要类别。如果我点击它们中的任何一个,我会得到关于索引的错误,因为包含categoriesList的ArticleProvide仍然是子类别。

    如何解决这样的问题?无论如何要覆盖从子类别CategoriesList回到调用它的主要CategoriesList,或者一般来说我的设计是坏的?

    我很难为你提供代码,因为它太长了,正如我所提到的,这更像是一个设计问题。如果需要,我会这样做。

    另外我知道有一个解决方法来创建一个新的SubCategoriesList过程,但它与CategoriesList基本相同,所以如果可能的话我想让它工作。

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您似乎没有正确更新适配器,或者没有发送通知状态更改。

您可以通过覆盖onBackPressed捕获后退按钮操作,然后发送事件或手动更新适配器。通过使用internal broadcast,您可以实现某种Observer模式,允许您的适配器订阅一些自定义事件" back_to_categories",这将由您的片段在后退按钮上发出。