2010-08-24 76 views
1

我已將一個小應用程序放在一起,它有三個選項卡可以顯示三個不同的網頁。它確實有效,但是我有點擔心我對這整個事情的工作方式沒有足夠的控制。當我點擊一個標籤時,我得到一個網頁加載(見下面的代碼示例),現在當我點擊另一個標籤時,另一個網頁加載到另一個視圖中。當我回到第一個標籤頁時,整個事情再次被啓動並加載頁面。有什麼辦法可以控制這種情況,只要我願意(並且只是在頁面發生變化時說「刷新」頁面),就可以將underneeth標籤的活動保持在當前狀態。Android標籤 - 避免在標籤點擊時重新創建活動

做我需要處理的onPause()/的onResume()爲方法或代替執行我的標籤視圖可以單個活動的(這是可能的呢?)?如何保存我的活動狀態以避免每次都重新初始化它?

這怎麼活動鉤住標籤:

intent = new Intent().setClass(this, tab_schedule.class); 
    spec = tabHost.newTabSpec("Schedule").setIndicator("Schedule", 
    res.getDrawable(R.drawable.tab_icon_schedule)).setContent(
    intent); 
    tabHost.addTab(spec); 

的tab_schedule.class沒有一個簡單的網頁加載:

@Override 
public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.tab_people); 

    try { 

    WebView currentView = (WebView) findViewById(R.id.tab_people_WebView); 
    currentView.getSettings().setJavaScriptEnabled(true); 
    currentView.loadUrl("http://pda.lenta.ru"); 

    } catch (Exception e) { 
    Log.v("webClientInit", e.getMessage()); 
    } 
} 

回答

3

如果您不希望創建新活動選項卡,可以使用帶有FrameLayout的TabWidget在視圖之間切換。

至於交換的活動,看到這個question一種方式,以每次不重新創建活動。

無論如何,你應該始終貫徹的onPause和的onResume來恢復您的應用程序的狀態。你可能想要閱讀Activity Lifecycle,但基本上你不能阻止你的活動在進入後臺時被殺害。因此,你應該將你的狀態存儲在onPause中。上面的鏈接也有一些關於如何做的信息。

0

爲了使先前的活動,以在堆棧使用intent.addFlag(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)的頂部;