Android ActionbarSherlock - 当使用ListNavigation时,是否应该在Activity启动时调用onNavigationItemSelected()?

时间:2013-07-08 22:48:00

标签: android actionbarsherlock

我正在使用ListNavigation,并且在Activity启动时调用onNavigationItemSelected()方法。

这是我的方法:

@Override
public boolean onNavigationItemSelected(int itemPosition, long itemId) 
{        
    if ( itemPosition == 1 )
    {
        Intent myIntent = new Intent(MainActivity.this, MainActivity.class);
        MainActivity.this.startActivity(myIntent); 
    }
    else
    if ( itemPosition == 2 )
    {
        Intent myIntent = new Intent(MainActivity.this, LearnActivity.class);
        MainActivity.this.startActivity(myIntent);          
    }        
    else
    if ( itemPosition == 3 )
    {
        Intent myIntent = new Intent(MainActivity.this, ServicesActivity.class);
        MainActivity.this.startActivity(myIntent);          
    }                

    return true;
}    

但事情显然是错误的。这些意图不应该是那种方法吗?或者我得到了一些非常混乱的东西?

我得到的行为是,当我尝试去另一个活动时,它总会把它带回到开始活动。

知道出了什么问题吗?

谢谢, 亚历

1 个答案:

答案 0 :(得分:0)

修复程序最终解决了这个问题:

<resources>
    <string-array name="locations">
        <item>Navigation</item>        
        <item>Home</item>
        <item>Learn</item>
        <item>Services</item>
        <item>Next Steps</item>
    </string-array>
</resources>

然后

**  @Override
  public boolean onNavigationItemSelected(int itemPosition, long itemId) 
  {        
      if ( itemPosition == 1 )
      {
          Intent myIntent = new Intent(ServicesActivity.this, MainActivity.class);
          ServicesActivity.this.startActivity(myIntent);            
      }
      else
      if ( itemPosition == 2 )
      {
          Intent myIntent = new Intent(ServicesActivity.this, LearnActivity.class);
          ServicesActivity.this.startActivity(myIntent);            
      }        
      else
      if ( itemPosition == 3 )
      {
          Intent myIntent = new Intent(ServicesActivity.this, ServicesActivity.class);
          ServicesActivity.this.startActivity(myIntent);            
      }        
      else
      if ( itemPosition == 4 )
      {
          Intent myIntent = new Intent(ServicesActivity.this, GiveBackActivity.class);
          ServicesActivity.this.startActivity(myIntent);
      }                

      return true;
  }    

问题在于,有时调用的id会触发错误的意图。所以我必须要小心。另外,我使第一个数组项是任意的,所以如果页面加载和id为0,我知道不要做任何事情。