2011-02-03 56 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); 
相關問題