我需要在按钮Click时显示菜单.但是我无法显示菜单.我的代码如下.谁能告诉我我的代码有什么问题??? 提前致谢 !!!
代码:
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
public class DynamicMenu extends Activity {
/** Called when the activity is first created. */
private Context context;
Button btnMenu;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
context = this;
LinearLayout llay = new LinearLayout(context);
btnMenu = new Button(context);
btnMenu.setText("Show Menu");
llay.addView(btnMenu);
setContentView(llay);
registerForContextMenu(btnMenu);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenu.ContextMenuInfo menuInfo) {
Menu m_menu = menu;
m_menu.add(0, 1, 0, "Settings");
m_menu.add(0, 2, 0, "About");
m_menu.add(0, 3, 0, "Exit");
}
}
Run Code Online (Sandbox Code Playgroud)
你想叫什么?Menu
或者Context Menu
这些是两件不同的事情.
您编码的内容会导致出现上下文菜单.(长按按钮显示上下文菜单),下面是一个示例:
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.Toast;
public class MenuDemo extends Activity {
/** Called when the activity is first created. */
private Context context;
Button btnMenu;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
context = this;
LinearLayout llay = new LinearLayout(context);
btnMenu = new Button(context);
btnMenu.setText("Show Menu");
llay.addView(btnMenu);
setContentView(llay);
registerForContextMenu(btnMenu);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenu.ContextMenuInfo menuInfo) {//Context Menu that appears when long clicked.
Menu m_menu = menu;
m_menu.add(Menu.NONE, Menu.FIRST+1, 0, "Settings");
m_menu.add(Menu.NONE, Menu.FIRST+2, 0, "About");
m_menu.add(Menu.NONE, Menu.FIRST+3, 0, "Exit");
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//Menu that appears when menu button is pressed on device
Menu m_menu = menu;
m_menu.add(Menu.NONE, Menu.FIRST+3, 0, "Settings");
m_menu.add(Menu.NONE, Menu.FIRST+4, 0, "About");
m_menu.add(Menu.NONE, Menu.FIRST+5, 0, "Exit");
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
String msg="Selected from menu: ";
switch (item.getItemId()){
case Menu.FIRST+3:
Toast.makeText(this, msg+"Settings Menu", Toast.LENGTH_LONG).show();
return true;
case Menu.FIRST+4:
Toast.makeText(this, msg+"About Menu", Toast.LENGTH_LONG).show();
return true;
case Menu.FIRST+5:
Toast.makeText(this, msg+"Exit Menu", Toast.LENGTH_LONG).show();
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
String msg="Selected from context menu: ";
switch (item.getItemId()){
case Menu.FIRST+1:
Toast.makeText(this, msg+"Settings", Toast.LENGTH_LONG).show();
return true;
case Menu.FIRST+2:
Toast.makeText(this, msg+"About", Toast.LENGTH_LONG).show();
return true;
case Menu.FIRST+3:
Toast.makeText(this, msg+"Exit", Toast.LENGTH_LONG).show();
return true;
}
return super.onContextItemSelected(item);
}
}
Run Code Online (Sandbox Code Playgroud)
这不是最好的实践和推荐的代码,你可以在这里真正使用多态.但我希望这会给你一个想法.
归档时间: |
|
查看次数: |
8548 次 |
最近记录: |