如何使用onItemLongClick显示上下文菜单?

Akm*_*ool 4 android android-contextmenu

我试图在这里得到答案,但没有得到任何完美的答案.我想显示在上下文菜单中onItemLongClick,但没有成功,因为我同时使用onItemClickonItemLongClick

我正在onItemClick用来开始一项新的活动,但两者都没有成功.

这是代码

    @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.all_contacts);  

    contactList = new ArrayList<HashMap<String,String>>();

    new LoadAllContacts().execute();

    registerForContextMenu(getListView());

    ListView listView = getListView();

    listView.setOnItemLongClickListener(new OnItemLongClickListener() {

        @Override
        public boolean onItemLongClick(AdapterView<?> parent, View view,
                int postion, long id) {
                registerForContextMenu( view );
                openContextMenu( view ); 
            return true;
        }
    });
    listView.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int postion, long id) {
            Intent intent = new Intent(AllContactsActivity.this, editContactActivity.class);    
        }
    });
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if(resultCode == 100)
    {
        Intent intent = getIntent();
        finish();
        startActivity(intent);
    }
}

@Override
public void onCreateContextMenu(ContextMenu menu, View v,
        ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.listview_menu, menu);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case R.id.editContactMI:
        Intent i = new  Intent(getApplicationContext(), editContactActivity.class);
        i.putExtra(TAG_ID, cId);
        i.putExtra(TAG_NAME, cName);
        i.putExtra(TAG_CONTACT_NO, cNumber);
        startActivityForResult(i, 100);
        cId = null;
        cName = null;
        cNumber = null;
        break;
    case R.id.deleteContactMI :
        new DeleteContact().execute();
        break;
    case R.id.saveContactMI:
        break;
    default:
        cId = null;
        cName = null;
        cNumber = null;
        break;
    }

    return true;
}
Run Code Online (Sandbox Code Playgroud)

Com*_*are 6

我想在onItemLongClick上显示上下文菜单

要使用上下文菜单系统,请不要实现OnItemLongClickListener.相反,你打电话registerForContextMenu()(例如,来自onCreate()活动).只需OnItemLongClickListener从上面显示的代码中删除您,您就应该有更好的运气.

  • @AkmalRasool:从你活动的`onCreate()`之类的地方调用`registerForContextMenu()`.仅此而已启用上下文菜单. (2认同)