Android:从菜单项启动活动
我是Android新手,我正在尝试从用户选择的Android:从菜单项启动活动,android,menu,Android,Menu,我是Android新手,我正在尝试从用户选择的菜单项开始一项活动 实际上,我正在使用MenuInflater从我的主要活动类构建菜单(并且工作正常): @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); //the Menu Inflater class allows to create a menu from a
菜单项开始一项活动
实际上,我正在使用MenuInflater
从我的主要活动类构建菜单(并且工作正常):
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
super.onCreateOptionsMenu(menu);
//the Menu Inflater class allows to create a menu from a XML File
MenuInflater inflater = new MenuInflater(this);
inflater.inflate(R.layout.menutest,menu);
return true;
}
我用以下代码处理菜单选择(工作也很好):
我有第二个也是最后一个名为AddWebsite的活动,我想启动它,但以下代码不起作用:
protected void ShowScreenAddSite()
{
Intent i = new Intent(AddWebsite.class);
startActivity(i);
}
你知道我必须传递给Intent
构造函数的额外内容是什么吗?我自己对android还是很陌生,但你不需要传递上下文给Intent构造函数吗
protected void ShowScreenAddSite()
{
Intent i = new Intent(this, AddWebsite.class);
startActivity(i);
}
您可能是在活动中执行此操作,因此我认为您应该使用“this”我自己对android还是很陌生,但您不需要将上下文传递给Intent构造函数吗
protected void ShowScreenAddSite()
{
Intent i = new Intent(this, AddWebsite.class);
startActivity(i);
}
您可能是在活动内部执行此操作,因此我认为您应该使用“this”解决方案太简单了,似乎在android中,manifest.xml中不会自动引用每个活动类
我只是将新活动添加到清单中,效果很好
问候。
Jose解决方案太简单了,似乎在android中,manifest.xml中不会自动引用每个活动类
我只是将新活动添加到清单中,效果很好
问候。
何塞你也可以这样做
/* (non-Javadoc)
* @see android.app.Activity#onCreateOptionsMenu(android.view.Menu)
*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {
final MenuInflater inflater = new MenuInflater(this);
final Intent[] menuIntents = new Intent[] {
new Intent(this, AddWebsite.class) };
inflater.inflate(R.menu.mymenu, menu);
final int ms = menu.size();
for (int i=0; i < ms; i++) {
menu.getItem(i).setIntent(menuIntents[i]);
}
return super.onCreateOptionsMenu(menu);
}
/*(非Javadoc)
*@see android.app.Activity#onCreateOptions菜单(android.view.Menu)
*/
@凌驾
公共布尔onCreateOptions菜单(菜单){
最终菜单充气器=新菜单充气器(本);
最终意图[]菜单内容=新意图[]{
新意图(this,AddWebsite.class)};
充气机。充气(R.menu.mymenu,menu);
final int ms=menu.size();
对于(int i=0;i
避免一些方法调用,但是您需要注意菜单ID、菜单顺序和意图之间的映射,但这几乎是众所周知的。您也可以这样做
/* (non-Javadoc)
* @see android.app.Activity#onCreateOptionsMenu(android.view.Menu)
*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {
final MenuInflater inflater = new MenuInflater(this);
final Intent[] menuIntents = new Intent[] {
new Intent(this, AddWebsite.class) };
inflater.inflate(R.menu.mymenu, menu);
final int ms = menu.size();
for (int i=0; i < ms; i++) {
menu.getItem(i).setIntent(menuIntents[i]);
}
return super.onCreateOptionsMenu(menu);
}
/*(非Javadoc)
*@see android.app.Activity#onCreateOptions菜单(android.view.Menu)
*/
@凌驾
公共布尔onCreateOptions菜单(菜单){
最终菜单充气器=新菜单充气器(本);
最终意图[]菜单内容=新意图[]{
新意图(this,AddWebsite.class)};
充气机。充气(R.menu.mymenu,menu);
final int ms=menu.size();
对于(int i=0;i
避免一些方法调用,但是您需要注意菜单ID、菜单顺序和意图之间的映射,但这几乎是众所周知的。Hi Matt,感谢您的回复。我尝试了这个选项,但是我得到一个错误,说应用程序意外地完成了。my Addwebsite活动的代码如下(可能有任何错误…):公共类Addwebsite扩展活动{@Override public void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.screenaddsite);}你看到代码里还有什么奇怪的东西吗?谢谢顺致敬意,何塞,你好,马特,谢谢你的回复。我尝试了这个选项,但是我得到一个错误,说应用程序意外地完成了。my Addwebsite活动的代码如下(可能有任何错误…):公共类Addwebsite扩展活动{@Override public void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.screenaddsite);}你看到代码里还有什么奇怪的东西吗?谢谢顺致敬意,既然这解决了你的问题,你就可以接受你自己的答案。既然这解决了你的问题,你就可以接受你自己的答案。