初学Android,完全照着资料上的例子学,有时候稍作一点改变后出错了就不知道原因是什么,网上也找不到答案,望各位能给予解答,万分感谢。
源代码:public class TinyPlayer extends Activity {
final int C_MENU_NEW = Menu.FIRST;
final int C_MENU_OPEN = Menu.FIRST + 1; /** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
LinearLayout line = (LinearLayout)this.findViewById(R.id.ctrlandinfo);
//为mainlayout注册上下文菜单
this.registerForContextMenu(line);
setContentView(R.layout.main);
}////////////////////////////////////////关于上下文菜单///////////////////////////////
/**
 * 重写方法,加载上下文菜单
 */
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
// TODO Auto-generated method stub
super.onCreateContextMenu(menu, v, menuInfo);
menu.add(0,C_MENU_NEW,0,"新建");
menu.add(0,C_MENU_OPEN,0,"打开");
} /**
 * 加载 上下文菜单点击事件
 */
@Override
public boolean onContextItemSelected(MenuItem item) {
// TODO Auto-generated method stub
super.onContextItemSelected(item);
switch(item.getItemId()){
case C_MENU_NEW:
//做新建相关的事
break;
case C_MENU_OPEN:
//做打开相关的事
break;
}
return true;
}

}
我的想法是在整个Activity上加上上下文菜单,“ctrlandinfo”为main.xml里面LinearLayout的id,结果照我上面写的就报错了。
如果把onCreat()方法里面的内容改为:
  super.onCreate(savedInstanceState);
  TextView tv = new TextView(this);
  tv.setText("上下文菜单载体");
  this.registerForContextMenu(tv);
  setContentView(tv);
这样就没有错,但这样只是为activity里的一个控件加上了上下文菜单,如果我想给整个activity加,应该怎么写?