嗨,我正在创建一个应用程序与表格活动。但出于安全原因,每当应用移动到后台并重新启动或应用程序打开时,主屏幕都会询问密码,因为当某个活动调用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"));
}发布于 2012-03-21 05:13:05
您需要自己保存/恢复当前选项卡。您可以使用TabHost.set/getCurrentTab()和. .get/setCurrentTabByTag()来做到这一点。后者允许您向选项卡分配字符串标记,而不是按整数值处理选项卡。
您可以简单地将所选选项卡保存到onStop()中的共享首选项中,并在onStart()中恢复它。
下面是一些示例代码,
http://code.google.com/p/csdroid/source/browse/trunk/src/org/jtb/csdroid/TabWidgetActivity.java
请注意,这将恢复onCreate()中的选项卡,并在每次更改选项卡时将当前选项卡保存为prefs。这不一定是最好的例子,但它给你一个想法。
发布于 2012-03-21 06:06:06
使用共享首选项将表主机的选定选项卡保存在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。
https://stackoverflow.com/questions/9798732
复制相似问题