2012-03-21 40 views
0

嗨,我創建一個應用tabactivity。但出於安全原因,我做出了改變,主屏幕會要求密碼,每當應用程序被移動到後臺,並重新開始或每當應用程序打開,因爲當一個活動調用stop()然後我通過調用finish()完成應用程序,它是加工。但問題是我無法看到用戶正在查看的最後一個標籤。我已經使用onsaveinstancestate()這在這種情況下不起作用。我在這裏做什麼是錯的。有沒有其他方法呢?任何建議,歡迎 這是我的止損方法我的應用安全鎖

public void onStop() 
{ 
    super.onStop(); 
finish(); 
    System.out.println("In the onStop() event"); 
} 

    this is my code in tabactivity 
protected void onSaveInstanceState (Bundle outState){ 
      outState.putInt("name",tabHost.getCurrentTab()); 

     super.onSaveInstanceState(outState);} 
    protected void onRestoreInstanceState(Bundle outState){ 

     super.onRestoreInstanceState(outState); 
     tabHost.setCurrentTab(outState.getInt("name")); 
    } 

回答

1

您需要保存/恢復當前標籤自己。你可以使用TabHost.set/getCurrentTab()和.get/setCurrentTabByTag()來做到這一點。後者允許您爲標籤分配一個字符串標籤,而不是按整數值處理標籤。

您可以簡單地將選定的選項卡保存到onStop()中的共享首選項中,然後在onStart()中將其恢復。

這裏的一些示例代碼,

http://code.google.com/p/csdroid/source/browse/trunk/src/org/jtb/csdroid/TabWidgetActivity.java

注意,這個恢復在的onCreate(標籤),並保存當前選項卡的首選項每個選項卡改變時。這不一定是最好的例子,但它給了你一個想法。

+0

感謝您對我的幫助,我有疑問存儲在共享首選項將被檢索,即使活動後被殺害嗎? – Ghouse 2012-03-21 06:17:41

+0

是的,共享首選項在應用程序啓動時保持不變。 – 2012-03-21 13:35:26

0

使用共享首選項將選定的tabhost保存在onStop()中,並將其恢復到onStart()。

@Override 
    protected void onStop() { 
     // TODO Auto-generated method stub 
     super.onStop(); 
SharedPreferences pref = getPreferences(Context.MODE_PRIVATE); 
     Editor ed =pref.edit(); 
     ed.putInt("selected_tab",t.getCurrentTab()); 
    ed.commit(); 
} 
@Override 
    protected void onStart() { 
     // TODO Auto-generated method stub 
     super.onStart(); 
     SharedPreferences pref = getPreferences(Context.MODE_PRIVATE); 
     t.setCurrentTab(pref.getInt("selected_tab", -1)); 

} 

將t與實例變量引用替換爲您的tabhost。