gpt4 book ai didi

android - 如何从 Android 中的菜单项调用 Activity?

转载 作者:IT老高 更新时间:2023-10-28 23:38:22 27 4
gpt4 key购买 nike

我试图通过单击菜单按钮来调用 startActivity(myIntent),但我的应用程序此时崩溃了。

相同的 startActivity 调用可以通过常规按钮单击正常工作,所以,我假设菜单按钮缺少有关上下文的信息?或者也许我在这里完全不合时宜。

那么...让菜单项将我带到特定 Activity 的正确方法是什么?

我已经根据最初的建议修改了我的代码。仍然在同一个地方崩溃。调试器没有进入异常子句,应用程序就死了。

[使用代码 fragment 编辑]

public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
try{
switch (item.getItemId()) {
case R.id.menuItemLang:
startActivity(new Intent("com.my.project.SETTINGS"));
return true;
default:
return super.onOptionsItemSelected(item);
}
}catch(Exception e){
log(e);
}
}

最佳答案

第一选择

您必须覆盖 onOptionsItemSelected Activity 中的方法,当用户单击选项菜单中的项目时调用该方法。在该方法中,您可以检查单击了哪些项目。

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.menu_item1:
Intent intent = new Intent(this, ActivityForItemOne.class);
this.startActivity(intent);
break;
case R.id.menu_item2:
// another startActivity, this is for item with id "menu_item2"
break;
default:
return super.onOptionsItemSelected(item);
}

return true;
}

还有onContextItemSelected方法类似,但对于上下文菜单(我不确定,你的意思是什么菜单)。

更多信息请访问 http://developer.android.com/guide/topics/ui/menus.html

编辑:

第二个选项

我认为第一个选项更简单,但是从您的代码中我看到,您希望将 Activity 作为一个操作启动(因为 String 构造函数中的 Intent 参数)。为此,您需要在 AndroidManifest.xml 中指定一个操作。所以,如果我要开始 Activity ActivityForItemOne (来自上一个示例)<application> AndroidManifest.xml 中的元素如下所示:

<application ...>
...

<activity android:label="Activity For First Item" android:name=".ActivityForItemOne">
<intent-filter>
<action android:name="my.app.ITEMONE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>

还有 Intent将是:

Intent intent = new Intent("my.app.ITEMONE");

my.app.是您的应用程序包。不必使用您的应用程序包,但建议您使用它以确保操作的唯一性。

更多信息请访问:

Class Intent - Action and Category constants

Action element

Intents and Intent Filters

希望这能解决您的问题。

关于android - 如何从 Android 中的菜单项调用 Activity?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4169714/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com