嗨,我正在使用 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"));
}
答案 0 :(得分:1)
您需要自己保存/恢复当前标签。你可以使用TabHost.set / getCurrentTab()和.get / setCurrentTabByTag()来做到这一点。后者允许您为选项卡分配字符串标记,而不是按整数值处理选项卡。
您只需将选定的标签保存到onStop()的共享首选项中,然后在onStart()中恢复它。
这是一些示例代码,
http://code.google.com/p/csdroid/source/browse/trunk/src/org/jtb/csdroid/TabWidgetActivity.java
请注意,这将恢复onCreate()中的选项卡,并在每次更改选项卡时将当前选项卡保存到prefs。这不一定是最好的例子,但它会给你一个想法。
答案 1 :(得分: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的实例变量引用。