Android标签 - 避免在标签点击上重新创建活动

时间:2010-08-24 23:13:11

标签: android view android-activity tabs

我把一个小应用程序放在一起,有三个标签显示三个不同的网页。它确实有效但我有点担心我对这整个过程的运作方式没有足够的控制。当我单击一个选项卡时,我会加载一个网页(参见下面的代码示例),现在当我单击另一个选项卡时,另一个页面会在另一个视图中加载。当我回到第一个标签时,整个事情再次被启动并且页面加载。有没有一种方法可以控制它,并且只要我愿意就将underneeth tab的活动保持在当前状态(并且只有在更改时才“刷新”页面。)

我是否需要为此处理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());
  }
 }

2 个答案:

答案 0 :(得分:3)

如果您不想为每个标签创建新活动,可以使用带有FrameLayout的TabWidget在视图之间切换。

关于切换活动,请参阅此question,了解每次都不重新创建活动的方法。

无论如何,您应该始终实现onPause和onResume来恢复应用的状态。您可能想要阅读Activity Lifecycle,但基本上您无法阻止您的活动在进入后台时被杀死。因此,您应该将状态存储在onPause中。上面的链接也有一些关于如何操作的信息。

答案 1 :(得分:0)

要将上一个活动带到堆栈顶部,请使用intent.addFlag(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);