2012-10-16 73 views
-1

我的应用程序中有以下代码。有一个登录按钮,在我看来工作得很好。我已经覆盖了我的视图中的选项菜单,并将登录代码放入附加到选项菜单的侦听器中。当我按下选项菜单登录按钮没有发生在第一次点击,但一切工作正常后续点击。为什么是这样?Android选项菜单按钮仅在第二次点击后才起作用

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // TODO Auto-generated method stub 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.layout.menuentryoptionsmenu, menu); 
     return true; 

    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
switch (item.getItemId()) { 


     case R.id.login: 
         item.setOnMenuItemClickListener(new OnMenuItemClickListener(){ 

          @Override 
          public boolean onMenuItemClick(MenuItem item) { 
           // TODO Auto-generated method stub 
           Log.e(TAG, "login clicked from opts menu"); 
           compId = "100"; 
            String theUsername = userName.getText().toString(); 
            thePassword = passwordPin.getText().toString(); 
            String loginType = "1"; 



            String[] params = new String[]{compId, theUsername, thePassword, loginType}; 

            //validate user Asynchonously on background thread 
            AsyncValidateCarer avc = new AsyncValidateCarer(); 
            avc.execute(params); 
           return true; 
          }}); 


      return true; 


     case R.id.changeuser: 
      if(isAllowChangeUser.equalsIgnoreCase("false")){ 
      item.setVisible(false); 
      } 
      return true; 



     default: 

      return super.onOptionsItemSelected(item); 
     } 
    } 

回答

3

删除点击侦听器。 只需将整个登录代码放在case R.id.login:之后即可。

这是因为onOptionsItemSelected已经是点击,您不必再次创建和设置它。

+0

非常感谢,它现在工作正常 – turtleboy

1

看起来,您第一次点击选项菜单项时,您只是添加了OnMenuItemClickListener侦听器。第二次点击时,您正在触发该听众。

尝试删除onMenuItemClickListener代码,并将onMenuItemClick函数中的代码直接放入switch语句中。

相关问题