2012-03-21 38 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。