【问题标题】:Android tabs - avoid recreating activities on tab clicksAndroid 标签 - 避免在标签点击时重新创建活动
【发布时间】:2010-08-24 23:13:10
【问题描述】:

我已经将一个小应用程序放在一起,它具有三个选项卡来显示三个不同的网页。它确实有效,但是我有点担心我对整个事情的运作方式没有足够的控制权。当我单击一个选项卡时,我会加载一个网页(请参见下面的代码示例),现在当我单击另一个选项卡时,另一个页面会在另一个视图中加载。当我回到第一个选项卡时,整个事情再次被初始化并加载页面。有没有一种方法可以控制这一点,并根据需要将底部选项卡的活动保持在当前状态(并且只说在页面更改时“刷新”页面)。

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

【问题讨论】:

    标签: android view android-activity tabs


    【解决方案1】:

    如果您不想为每个选项卡创建新活动,可以使用 TabWidget 和 FrameLayout 在视图之间切换。

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多