Android 如何在TabActivity的单个选项卡下管理多个活动

Android 如何在TabActivity的单个选项卡下管理多个活动,android,Android,问题出在这里。在我的应用程序中,我有5个包含活动的选项卡。在每一个屏幕中,我都必须显示不同的屏幕。例如,选项卡的主要活动是listview,当我单击其中一个项目时,我希望显示另一个屏幕和另一个listview,当用户选择项目时,该屏幕将显示另一个屏幕等 所以我知道选项卡中的活动不容易管理,但我真的认为我需要这个解决方案。实际上,每个屏幕必须包含一个返回按钮,该按钮将返回到上一个屏幕,并具有上一个状态(列表中的相同位置) 为了在选项卡内开始新的活动,我使用了这里描述的技术 它基本上运行得很好,但是

问题出在这里。在我的应用程序中,我有5个包含活动的选项卡。在每一个屏幕中,我都必须显示不同的屏幕。例如,选项卡的主要活动是listview,当我单击其中一个项目时,我希望显示另一个屏幕和另一个listview,当用户选择项目时,该屏幕将显示另一个屏幕等

所以我知道选项卡中的活动不容易管理,但我真的认为我需要这个解决方案。实际上,每个屏幕必须包含一个返回按钮,该按钮将返回到上一个屏幕,并具有上一个状态(列表中的相同位置)

为了在选项卡内开始新的活动,我使用了这里描述的技术

它基本上运行得很好,但是我遇到了一个问题,无法回到以前的活动。我目前的解决方案是像本网站上描述的那样开始之前的活动,但不带任何标志

这是我的两个真正的问题:

  • 当我尝试返回到选项卡的第一个主活动时,似乎创建了一个新实例,即使我使用了Intent.flag\u activity\u CLEAR\u TOP标志。因此,当我在这个活动和下一个活动之间进行多次往返时,我会得到一个StackErrorOverFlow

  • 因为这些活动可以从不同的活动中获得,所以我必须始终记住父母的活动,通过在意图中给予它们。当我连续有5到6个屏幕时,它真的很沉重,如果活动。。。如果我能调用localActivityManager启动的最后一个活动,我将不胜感激

谢谢你的帮助, 如果我不明白,请告诉我

好的,解决方案(在上面的网站上给出)是:

this.m_backButton.setOnClickListener(new OnClickListener() { 
  @Override 
  public void onClick(View v) {
  Intent intent = new Intent(v.getContext(), Activity1.class);
  Activity1 parentActivity = (Activity1)getParent();  
  parentActivity.replaceContentView("activity1", intent, 
                 Intent.FLAG_ACTIVITY_REORDER_TO_FRONT ); 
  }
});

从ActivityGroup中取出我的主要活动。您可以在这里看到答案:

我对这段代码仍然有问题。我不知道如何处理android后退按钮。我有一个图形按钮,可以使用上面显示的方法返回到上一个活动,但是如果我尝试在设备的物理后退按钮上添加此行为,它将不起作用。我尝试过使用onKeyPressent和KEY_BACK事件,但它从未出现在本代码部分中

此外,使用这种子活动技术,我在启动新动画时没有滑动动画。我尝试手动添加动画,但我可能没有使用好的技术,因为它很滞后:

public void replaceContentView(String id, Intent newIntent, int flag) {
    View view = mLocalActivityManager.startActivity(id, newIntent.addFlags(flag)).getDecorView();   

    Animation animation = AnimationUtils.loadAnimation(this, R.anim.slide_right);
    view.startAnimation(animation); 
    this.setContentView(view); 
}

谢谢

我有同样的问题,我相信在我刚刚写的这篇博客文章中,我有一个非常好的答案,其中有一些代码示例。

让我知道它是否有用,或者是否需要改进