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

标签 android android-contextmenu

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

我正在使用 onItemClick 开始一个新 Activity ,但两者都没有成功。

这是代码

    @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;
}

最佳答案

I am trying to show context menu on onItemLongClick

要使用上下文菜单系统,您无需实现 OnItemLongClickListener。相反,您调用 registerForContextMenu()(例如,从 Activity 的 onCreate())。只需从上面显示的代码中删除 OnItemLongClickListener,您的运气就会好一些。

关于android - 如何使用 onItemLongClick 显示上下文菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14924414/

相关文章:

android - 使用 onCreateContextMenu 从 listView 复制文本

android - 无法在应用程式Gradle文件中参照BuildConfig-Android Studio

android - Chrome native 应用程序安装横幅和添加到主屏幕

java - 安卓Java : Activity doesn't start when the used SharedPreferences

Android - 打开小部件上下文菜单的 Intent

android - 如何从android的onContextItemSelected中的 ListView 中获取所选视频的绝对路径?

android - 无法将自定义 header 应用于上下文菜单(android)

android - 如何访问存储在 kotlin block 中的变量中的值

Android:选择不同的主题后使用不同的可绘制对象,保持相同的引用

java - 将所选项目从上下文菜单发送到另一个 Activity