mickey9294 2014-08-08 07:43 采纳率: 0%
浏览 3027

Android中onContextItemSelected不响应是怎么回事?

在实现一个Contextual Menu时,onCreateContextMenu()是成功执行了的,但长按显示出上下文菜单时,点击其中一个item,onContextItemSelected()中的内容并没有被执行,请问这是为什么?

public class MainActivity extends ActionBarActivity {

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

    TextView tv = (TextView)findViewById(R.id.hint);
    tv.setText("this is a textview");
    registerForContextMenu(tv);

}

public boolean onContexItemSelected(MenuItem item){
      super.onContextItemSelected(item);
      Log.d("ContextMenu", item.getTitle()+" is selected!");
      Toast.makeText(this, "Hleele;", Toast.LENGTH_LONG).show();
      return false;

  }


  public void onCreateContextMenu(ContextMenu menu, View v,
            ContextMenuInfo menuInfo) {
      super.onCreateContextMenu(menu, v, menuInfo);
        MenuItem cmitem1 = menu.add(0, Menu.FIRST, Menu.NONE, "item1");
        MenuItem cmitem2 = menu.add(0, Menu.FIRST+1, Menu.NONE, "item2");
        MenuItem cmitem3 = menu.add(0, Menu.FIRST+2, Menu.NONE, "item3");
        /*cmitem1.setCheckable(true)
        .setChecked(true);
        cmitem2.setCheckable(true);
        cmitem3.setCheckable(true);*/

    }

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}


@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}

}

  • 写回答

1条回答 默认 最新

  • 蹒跚走路的程序猿 2014-08-08 08:34
    关注

    你的onContexItemSelected、onCreateContextMenu需要继承activity的,onContexItemSelected方法中的super要去掉,返回true就ok了。我的代码是:

    @Override
    public void onCreateContextMenu(ContextMenu menu, View v,
            ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
        menu.add(0, Menu.FIRST, Menu.NONE, "item1");
        menu.add(0, Menu.FIRST + 1, Menu.NONE, "item2");
        menu.add(0, Menu.FIRST + 2, Menu.NONE, "item3");
    
    }
    
    @Override
    public boolean onContextItemSelected(MenuItem item) {
        Log.d("ContextMenu", item.getTitle() + " is selected!");
        Toast.makeText(this, "Hleele;", Toast.LENGTH_LONG).show();
        return true;
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样