2011-02-02 98 views
0

我有几个活动可以通过下面的菜单继承基本活动。Android - 作为选项卡的菜单项

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
     Intent myIntent; 
     switch(item.getItemId()) { 
     case R.id.home: 
      myIntent = new Intent(this, HomeActivity.class); 
      startActivityForResult(myIntent, 0); 
      return true; 
     case R.id.map: 
      myIntent = new Intent(this, GoogleMapsActivity.class); 
      startActivityForResult(myIntent, 0); 
      return true; 
     case R.id.art: 
      myIntent = new Intent(this, ArtActivity.class); 
      startActivityForResult(myIntent, 0); 
      return true; 
     ... 
     default: 
      return super.onOptionsItemSelected(item); 
     } 
    } 

这很好,但选择菜单项会启动该活动的新实例。 pause()和resume()如何与setResult()一起使用,以便在给定时间只有一个或更少的每个活动的实例?

为了更具体地说明,当用户回到先前访问的活动时,它应该处于与它离开它相同的状态(如标签)。

回答

0

您可以通过将launchMode的活动配置为singleTask来实现此目的。但是,正如文档指出的那样,这可能会导致用户意外的行为。当用户回击时,他们希望被带回到之前的屏幕上。如果您使用此模式,请确保您彻底测试后端功能。

+0

首先,感谢您的回复开始“活动”!这更接近我试图完成的目标。我对这个行为有一个问题。如果我转到具有应用程序主要意图的活动(从应用程序执行开始),然后返回到以前打开的活动,它仍然创建一个新实例(或至少回顾onCreate()。它不会如果我在非主要活动选项卡之间导航,请执行此操作。这种情况会发生什么原因? – 2011-02-02 20:54:27

+0

它与我的onOptionsItemSelected()的实现方式有关吗? – 2011-02-02 21:00:10

0

使用.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP| Intent.FLAG_ACTIVITY_SINGLE_TOP)到你的意图,只是通过startActivity