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

我是Android新手,我正在尝试从用户选择的
菜单项开始一项活动

实际上,我正在使用
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);}你看到代码里还有什么奇怪的东西吗?谢谢顺致敬意,既然这解决了你的问题,你就可以接受你自己的答案。既然这解决了你的问题,你就可以接受你自己的答案。