[英]Android, How to create Context Menu…
在这里我写了一些代码,但没有得到输出..请告诉我为什么不显示上下文菜单,我在哪里做错...? 请指导我,提前致谢....
more_tab_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/feeds"
android:title="Feeds"/>
<item
android:id="@+id/friends"
android:title="Friends"/>
<item
android:id="@+id/about"
android:title="About"/>
</menu>
MenuTest.java
public class MenuTest extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater =getMenuInflater();
inflater.inflate(R.menu.more_tab_menu, menu);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo contextMenuInfo=(AdapterContextMenuInfo)item.getMenuInfo();
switch(item.getItemId())
{
case R.id.feeds:
break;
case R.id.friends:
break;
case R.id.about:
break;
}
return super.onContextItemSelected(item);
}
}
请告诉我我在哪里做错了??
现在你有这个:
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater =getMenuInflater();
inflater.inflate(R.menu.more_tab_menu, menu);
把它改成这个:
MenuInflater inflater =getMenuInflater();
inflater.inflate(R.menu.more_tab_menu, menu);
return true;
也在onOptionsItemSelected中:
return true;
还可以使用onCreateOptionsMenu和onOptionsItemSelected。
您需要注册你的菜单registerForContextMenu 。
从这个页面
要使View提供上下文菜单,您必须“注册”上下文菜单的视图。 调用registerForContextMenu()并将其传递给您想要提供上下文菜单的视图。 当此视图接收长按时,它将显示上下文菜单。
上面的代码工作得很好。 您只需将内容菜单注册到视图即可。
如果要从屏幕中的任何位置启动上下文菜单:
假设您的布局main.xml
如下所示:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainLayout"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
</LinearLayout>
您将使用以下命令注册您创建的上下文菜单(在onCreate
):
LinearLayout layout = (LinearLayout)findViewById(R.id.mainLayout);
registerForContextMenu(layout);
因此,如果您在模拟器中运行此功能,并长按Android桌面,则会弹出菜单。
替换这个:
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.more_tab_menu, menu);
}
有了这个:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.more_tab_menu, menu);
return true;
}
这将导致按下手机上的菜单按钮时显示菜单项。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.