2011-02-03 102 views
5

我正在试图制作一个在屏幕底部有4个选项卡的应用程序。在TabActivity的FrameLayout中启动另一个活动

所有这些都包含活动(意图)。

我想将任何活动导航到其他活动。但要保持TabWidget可见。

如果你知道的话,尽快告诉我。


Shaiful

+0

需要更多信息,无法理解您的问题。 – 2011-02-03 05:53:32

回答

1

这在Tabs with multiple activities in a single tab实现。

但是,当多次活动被称为StackOverFlow错误出现时。试过非常辛苦,但无法解决它..请别人告诉方法来解决这个问题

还需要替换选项卡中的活动,但从儿童活动。那是怎么做的?

+0

不确定,我猜想堆栈溢出发生后,切换标签之间很多次。这是因为活动是使用活动堆栈进行管理的(请参阅http://developer.android.com/reference/android/app/Activity.html)。必须能够用位于新堆栈顶部的活动来替换新堆栈中的活动,而不是推送它。但我不确定这是最好的方式(这是一个真正的问题)。 – Shlublu 2011-07-20 21:31:42

+1

嘿,我已经找到了解决方案及其显示如下 – 2011-08-16 09:31:46

1

任何一个时刻可能只有一个活动。关于此的文档here

3

由于替换活动而导致错误发生的问题可以通过以下方式解决。

首先让我们来了解流程:下

  1. 我们有一个接头主机,活动(比如列表),从中我们需要去到下一个活动(说的详细点的点击项)同一个标签。为此,我们可以使用替换活动的概念。同时设置所选标签的标志和其他知道现在正在显示的细节的标志

  2. 当我们按回时,我们应该在同一个标​​签下获得先前的活动。为此,而不是再次替换活动,我们可以刷新选项卡,同时使用选定的选项卡的特定标志。此外,如果标志显示的细节是真实的,我们会去的名单在同一个标​​签,否则我们将tabwidget(正常使用onBackPressed的)之前去活动

的代码可以如下..

  1. 对于从列表中的细节去...

(这可以在onClickListener)

private OnClickListener textListener = new OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     Constants.SHOW_DETAILS = true; 
     Intent intent = new Intent(context, DetailsActivity.class); 
     replaceContentView("activity3", intent); 
     } 
}; 

public void replaceContentView(String id, Intent newIntent) { 
    View view = ((ActivityGroup) context) 
      .getLocalActivityManager() 
      .startActivity(id, 
        newIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)) 
      .getDecorView(); 
    ((Activity) context).setContentView(view); 

} 
  1. 当回压一点,我们在每一个活动的覆盖上BackPressed选项卡下再去列表从细节屏幕

    @Override 
        public void onBackPressed() { 
    // TODO Auto-generated method stub 
    super.onBackPressed(); 
    if (MathHelper.SHOW_DETAILS) { 
        Log.e("back", "pressed accepted"); 
        Constants.LIST_ACTIVITY = 1; 
        Constants.SHOW_DETAILS = false; 
        Intent intent = new Intent(this, Tab_widget.class); 
        startActivity(intent); 
        finish(); 
        } 
    } 
    

这里最重要的部分是 常量.LIST_ACTIVITY = 1;它表明我们在哪个标签。所以相应的活动将具有其值作为0,1,2 ...等

再次加载正确的列表(活动),当标签活动刷新时,我们必须包括这在TabWidget onCreate后创建标签

tabHost.setCurrentTab(Constants.LIST_ACTIVITY); 
相关问题