2010-08-24 75 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)的顶部;