Android 在listview的长时间单击中不显示关联菜单

Android 在listview的长时间单击中不显示关联菜单,android,listview,android-listview,android-contextmenu,Android,Listview,Android Listview,Android Contextmenu,我有一个列表视图。我想在长按某个项目时显示关联菜单。关联菜单将显示“删除”和“编辑”。我用下面的代码实现了它。但是,当我长按“单击项目”时,它不会显示关联菜单。请注意,长单击项已成功实现,但它不显示上下文菜单。你能帮我修一下吗 public class ManageActivity extends Activity { private ListView mainListView ; public void onCreate(Bundle savedInstanceState) {

我有一个列表视图。我想在长按某个项目时显示关联菜单。关联菜单将显示“删除”和“编辑”。我用下面的代码实现了它。但是,当我长按“单击项目”时,它不会显示关联菜单。请注意,长单击项已成功实现,但它不显示上下文菜单。你能帮我修一下吗

public class ManageActivity extends Activity {
  private ListView mainListView ;
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.list_main);    
    // Find the ListView resource. 
    mainListView = (ListView) findViewById( R.id.mainListView );
    mainListView.setAdapter( listAdapter );     
    registerForContextMenu(mainListView);
 }
 mainListView.setOnItemLongClickListener(new android.widget.AdapterView.OnItemLongClickListener() {

        public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
                int pos, long id) {
            // TODO Auto-generated method stub
            String  audio_file_name    = (String) mainListView.getItemAtPosition(pos);
            Log.v("long clicked",String.valueOf(audio_file_name));
            return true;
        }
    });

  }
  @Override
  public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo){
      menu.add(0, v.getId(), 0, "Edit");
      menu.add(0, v.getId(), 0, "Delete");
  }
  @Override
  public boolean onContextItemSelected(MenuItem item){
      if(item.getTitle()=="Edit")Toast.makeText(getApplicationContext(), "Edit Clicked", Toast.LENGTH_LONG).show();
      if(item.getTitle()=="Delete")Toast.makeText(getApplicationContext(), "Delete Clicked", Toast.LENGTH_LONG).show();
      return true;
  }
试试这个

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo){
    menu.add(v.getId(), 1, 0, "Edit");
    menu.add(v.getId(), 2, 0, "Delete");
}
您的
onContextItemSelected()
方法应该是这样的

@Override
public boolean onContextItemSelected(MenuItem item) {

    AdapterView.AdapterContextMenuInfo acmi = (AdapterContextMenuInfo) item.getMenuInfo();
    String  audio_file_namej = (String) mainListView.getItemAtPosition(acmi.position);
    Log.v("long clicked",String.valueOf(audio_file_name));

    switch (item.getItemId()) {
    case 1:
        Toast.makeText(getApplicationContext(), "Edit Clicked", Toast.LENGTH_LONG).show();
        break;
    case 2:
        Toast.makeText(getApplicationContext(), "Delete Clicked", Toast.LENGTH_LONG).show();
        break;
    }
    return true;
}

好的,请设置setLongClickable(true);我定的。但它仍然不起作用。我在SetonitemlongClickListener中打印了“长点击”好的。检查->
字符串音频文件名=(字符串)arg0.getItemAtPosition(pos)listadapter
的位置..请删除您的OnItemLongClickListener,然后重试您不能同时使用OnItemLongClickListener和上下文菜单您是对的。但是,我想从listview中获取要删除/编辑的项目详细信息。怎么能做到?它崩溃了。我的控件是mainListView,而不是TextView。您可以找到许多链接来获取从listview项中选择的OnContextItem上的文本
@Override
public boolean onContextItemSelected(MenuItem item) {

    AdapterView.AdapterContextMenuInfo acmi = (AdapterContextMenuInfo) item.getMenuInfo();
    String  audio_file_namej = (String) mainListView.getItemAtPosition(acmi.position);
    Log.v("long clicked",String.valueOf(audio_file_name));

    switch (item.getItemId()) {
    case 1:
        Toast.makeText(getApplicationContext(), "Edit Clicked", Toast.LENGTH_LONG).show();
        break;
    case 2:
        Toast.makeText(getApplicationContext(), "Delete Clicked", Toast.LENGTH_LONG).show();
        break;
    }
    return true;
}