我正在試圖製作一個在屏幕底部有4個選項卡的應用程序。在TabActivity的FrameLayout中啓動另一個活動
所有這些都包含活動(意圖)。
我想將任何活動導航到其他活動。但要保持TabWidget可見。
如果你知道的話,儘快告訴我。
Shaiful
我正在試圖製作一個在屏幕底部有4個選項卡的應用程序。在TabActivity的FrameLayout中啓動另一個活動
所有這些都包含活動(意圖)。
我想將任何活動導航到其他活動。但要保持TabWidget可見。
如果你知道的話,儘快告訴我。
Shaiful
這在Tabs with multiple activities in a single tab實現。
但是,當多次活動被稱爲StackOverFlow錯誤出現時。試過非常辛苦,但無法解決它..請別人告訴方法來解決這個問題
還需要替換選項卡中的活動,但從兒童活動。那是怎麼做的?
不確定,我猜想堆棧溢出發生後,切換標籤之間很多次。這是因爲活動是使用活動堆棧進行管理的(請參閱http://developer.android.com/reference/android/app/Activity.html)。必須能夠用位於新堆棧頂部的活動來替換新堆棧中的活動,而不是推送它。但我不確定這是最好的方式(這是一個真正的問題)。 – Shlublu 2011-07-20 21:31:42
嘿,我已經找到了解決方案及其顯示如下 – 2011-08-16 09:31:46
在任何一個時刻可能只有一個活動。關於此的文檔here
由於替換活動而導致錯誤發生的問題可以通過以下方式解決。
首先讓我們來了解流程:下
我們有一個接頭主機,活動(比如列表),從中我們需要去到下一個活動(說的詳細點的點擊項)同一個標籤。爲此,我們可以使用替換活動的概念。同時設置所選標籤的標誌和其他知道現在正在顯示的細節的標誌
當我們按回時,我們應該在同一個標簽下獲得先前的活動。爲此,而不是再次替換活動,我們可以刷新選項卡,同時使用選定的選項卡的特定標誌。此外,如果標誌顯示的細節是真實的,我們會去的名單在同一個標籤,否則我們將tabwidget(正常使用onBackPressed的)之前去活動
的代碼可以如下..
(這可以在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);
}
當回壓一點,我們在每一個活動的覆蓋上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);
需要更多信息,無法理解您的問題。 – 2011-02-03 05:53:32