2014-04-19 13 views
0

iv привязано между нажатием на кнопку изображения, чтобы открыть контекстное меню, но меню не открывается. здесь является XML:контекстное меню не открывается при событии click

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" > 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="My Movies" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:layout_weight="1" 
     android:gravity="center" /> 

    <ImageButton 
     android:id="@+id/btn_settings" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/ic_menu_settings_holo_light" /> 

</LinearLayout> 

здесь является подключение к событию щелчка:

private ImageButton btn_settings; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    btn_settings = (ImageButton)findViewById(R.id.btn_settings); 

    registerForContextMenu(btn_settings); 

и здесь само контекстное меню:

@Override 
public boolean onContextItemSelected(MenuItem item) { 
    // TODO Auto-generated method stub 
    switch (item.getItemId()){ 
    case R.id.Item1: 
     handler.deleteAllMovies(); 
     break; 

    case R.id.Item2: 
     finish(); 
    } 
    return super.onContextItemSelected(item); 
} 

@Override 
public void onCreateContextMenu(ContextMenu menu, View v, 
     ContextMenuInfo menuInfo) { 
    // TODO Auto-generated method stub 
    super.onCreateContextMenu(menu, v, menuInfo); 
    MenuInflater inflate = getMenuInflater(); 
    inflate.inflate(R.menu.context, menu); 
} 

в overides находятся вне OnCreate раздел и btn_settings imagebutton является глобальным. контекстное меню вообще не открывается, что я делаю неправильно?

ответ

0

Для ContextMenu, убедитесь, что вы длительное нажатие на кнопку изображения. В противном случае простое нажатие на кнопку не будет отображаться в контекстном меню.

Из документации ContextMenu:

Чтобы показать контекстное меню на длинной мыши, большинство клиентов хотят назвать registerForContextMenu (View) и переопределить onCreateContextMenu (ContextMenu, View, ContextMenu.ContextMenuInfo).

Если вы хотите, контекстное меню будет показано на одном щелчке мыши, вы можете вручную показать:

btn_settings = (ImageButton) findViewById(R.id.btn_settings); 
registerForContextMenu(btn_settings); 
btn_settings.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     view.showContextMenu(); 
    } 
}); 
+0

ти очень много! теперь i leard 2 usufull вещи [= – user3269786

+0

@ пользователь3269786 без проблем! Если это решит вашу проблему, не забудьте принять мой ответ. http://stackoverflow.com/help/someone-answers – singularhum

0

Пожалуйста, измените следующий код и попробуйте еще раз:

@Override 
public void onCreateContextMenu(ContextMenu menu, View v, 
     ContextMenuInfo menuInfo) { 
// TODO Auto-generated method stub 
MenuInflater inflate = getMenuInflater(); 
inflate.inflate(R.menu.context, menu); 
super.onCreateContextMenu(menu, v, menuInfo); 
} 

Я надеюсь, что это будет работать :)

+0

ID не работали, но Ty] = – user3269786

Смежные вопросы