Контекстное меню не закрывается

Мне нужно закрыть контекстное меню, когда пользователь щелкает за пределами окна меню. Как я могу это реализовать? В некоторых местах я видел, что контекстное меню закрывается, когда пользователь щелкает за пределами окна. Или есть другой способ закрыть контекстное меню. Пожалуйста, помогите .. спасибо. мой код здесь

selectedImageView = (ImageView) findViewById(R.id.selected_imageview);
    registerForContextMenu(selectedImageView);
}
    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)
    {

        super.onCreateContextMenu(menu, v, menuInfo);
        menu.setHeaderTitle("Post Image");
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.contextmenu, menu);
    }

    @Override
    public boolean onContextItemSelected(MenuItem item)
    {
      switch (item.getItemId())
      {
          case R.id.take_photo:
              Intent intent = new Intent(this, Mag.class);
              this.startActivity(intent);
              break;
          case R.id.choose_gallery:
              Intent intent2 = new Intent(this, Mag1.class);
              this.startActivity(intent2);
              break;

          case R.id.share_cancel:
              Intent intent3 = new Intent(this, Mag2.class);
              this.startActivity(intent3);
              break;
          default:
            return super.onContextItemSelected(item);
      }
      return true;
    }

person ess.crazy    schedule 24.07.2012    source источник
comment
выбранное изображение в приведенном выше коде — это изображение, выбранное из галереи.   -  person ess.crazy    schedule 24.07.2012


Ответы (3)


попробуй так

public static final int take_photo= Menu.FIRST;
public static final int choose_gallery= Menu.FIRST+1;
public static final int share_cancel= Menu.FIRST+2;


@Override
public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo menuInfo) {     

    menu.add(0,take_photo, 0, "take_photo");

    menu.add(0, choose_gallery, 0, "choose_gallery");  

    menu.add(0, share_cancel, 0, "share_cancel");  
}
@Override
public boolean onContextItemSelected(MenuItem item) {        ;
    onOptionsItemSelected(item);
    return true;
}

  public boolean onOptionsItemSelected(MenuItem item) {

   switch (item.getItemId())
  {
      case R.id.take_photo:
          Intent intent = new Intent(this, Mag.class);
          this.startActivity(intent);
          break;
      case R.id.choose_gallery:
          Intent intent2 = new Intent(this, Mag1.class);
          this.startActivity(intent2);
          break;

      case R.id.share_cancel:
          Intent intent3 = new Intent(this, Mag2.class);
          this.startActivity(intent3);
          break;
      default:
        return super.onContextItemSelected(item);
  }
  return true;

}
person NagarjunaReddy    schedule 24.07.2012
comment
спасибо за помощь .. но, тем не менее, это остается прежним. При выборе любого из вариантов он работает нормально и закрывается сам. Но что, если пользователь не хочет выбирать ни один из вариантов? вот моя проблема - person ess.crazy; 24.07.2012
comment
Вы можете быть более конкретным? это сделает автоматическое закрытие этого окна? куда мне положить sleep()? - person ess.crazy; 24.07.2012

Нет необходимости реализовывать какой-либо другой код для того, что вам нужно.

Android обеспечивает автоматическое закрытие menu window, когда вы щелкаете за пределами его блока

person Ram kiran    schedule 24.07.2012
comment
я попытался щелкнуть снаружи .. но он не закрывается. Пробую эмулятор. Нужно ли мне проверять то же самое на устройстве Android? - person ess.crazy; 24.07.2012
comment
нет необходимости проверять устройство. оно закроется. я думаю, что есть проблема с вашим R.menu.contextmenu. попробуйте создать пункты меню вручную, как сказал @nagarjunareddy - person Ram kiran; 24.07.2012

Android не обеспечивает такого поведения в версиях pre-ics, поэтому для этого необходимо написать дополнительный код.

person Pawan Maheshwari    schedule 28.08.2012