Android 如何从单个菜单选项启动新活动

Android 如何从单个菜单选项启动新活动,android,menuitem,Android,Menuitem,您好,我正在尝试用一个菜单选项(R.id.waypointEditId)打开一个新的活动(GPSWptsEdit.class),但是我对代码没有太多的运气。每次我在eclipse中以调试模式运行GPSTrialActivity并单击菜单选项时,我会在eclispe中弹出一个名为“确认透视开关”的窗口,当我单击“是”时,defualt instrumentation选项卡会显示“未找到源代码-JAR文件C:\Program Files(x86)\Android\Android sdk\platfo

您好,我正在尝试用一个菜单选项(R.id.waypointEditId)打开一个新的活动(GPSWptsEdit.class),但是我对代码没有太多的运气。每次我在eclipse中以调试模式运行GPSTrialActivity并单击菜单选项时,我会在eclispe中弹出一个名为“确认透视开关”的窗口,当我单击“是”时,defualt instrumentation选项卡会显示“未找到源代码-JAR文件C:\Program Files(x86)\Android\Android sdk\platfoms\Android-8\Android.JAR没有附加源代码”

如果有人能提供一些建议,我将不胜感激。以下是我一直在使用的代码:

@Override
public boolean onCreateOptionsMenu(Menu menu){
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu, menu);
    return true;
}
public boolean onOptionsItemSelected(MenuItem item){
    switch (item.getItemId()){
    case R.id.waypointEditId:
        waypointEdit();
        return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}
public void waypointEdit(){
     startActivity(new Intent(GPSTrialActivity.this, GPSWptsEdit.class));
}

}

问题可能是您在switch case构造中缺少了
break
;请尝试使用此代码

@Override
public boolean onCreateOptionsMenu(Menu menu){
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu, menu);
    return true;
}

public boolean onOptionsItemSelected(MenuItem item){
    switch (item.getItemId()){
    case R.id.waypointEditId:
        waypointEdit();
        break;
    default:
        return super.onOptionsItemSelected(item);
        break;
    }
}

public void waypointEdit(){
    Intent i = new Intent(GPSTrialActivity.this, GPSWptsEdit.class);
    startActivity(i);
    }
}

但是你能告诉我问题出在哪里吗?你会犯哪些错误?logcat怎么说?

我在我的项目中使用了同样的东西,而且效果很好

我用过:

@Override
public boolean onCreateOptionsMenu(Menu menu) {

        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.custom_menu, menu);
        return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle item selection
    switch (item.getItemId()) {

         case R.id.add_new:
                        openDialog();
                        return true;

         case R.id.delete_all:
                          // some code
                          return true;
         default:
                          return super.onOptionsItemSelected(item);
    }
}

public void openDialog() 
{
        Intent intent=new Intent(ThisActivity.this,NewActivity.class);          
        startActivity(intent);
        finish();               
}   

您遇到了什么问题?

在menifest中添加活动GPSWptsEdit。

在阅读了提供的评论后,我最终解决了问题。 结果是,我忘了修改这个:

setContentView(R.layout.wptedit);

还有什么不同呢?@xDragonZ当我研究
开关盒
结构时,他们告诉我总是在每个语句的末尾加上
中断;
,否则代码会跳到下一个例子。当你处理
选项
时,你必须返回
意味着你没有处理
选项
我的应用程序我处理选项菜单的代码与我在回答中写的类似-没有
返回true
谢谢你的解释,+1,因为在PHP中我使用
break;
但是在android中
返回true;
这让我很困惑。我在阅读了结果我忘了输入我的:“setContentView(R.layout.wptedit);“。在阅读了提供的评论之后,我最终解决了这个问题。结果我忘了输入我的:“setContentView(R.layout.wptedit);"