0

我正在开发 android 应用程序,我必须从服务中打开选项菜单,而无需按下任何按钮。我试过这个

Activity.openOptionsMenu();

但它显示错误“无法从类型 Activity 对非静态方法 openOptionsMenu() 进行静态引用”

任何帮助!谢谢你 。

4

2 回答 2

2

首先,这不是直接可能的。服务无权访问活动的选项菜单。前台甚至可能没有您的活动。

其次,当您进入 Android 3.0+ 时,并非所有设备都有选项菜单。

第三,即使对于 Android 1.x 和 2.x 设备,选项菜单应该打开的唯一时间是因为用户按下了 MENU 按钮。从用户体验的角度来看,其他任何事情都是高度怀疑的。

欢迎您让您的服务尝试联系您的前台活动(例如,通过BroadcastReceiver连接到LocalBroadcastManager)以告知该活动在后台发生了某些事情。欢迎该活动以某种对用户有意义的方式通知用户此事件,并将在今天和明天的设备上工作。

于 2012-03-31T12:56:56.323 回答
0

我自己没有尝试过,但要调用任何与活动相关的对象,最好BroadcastReciever在活动中添加一个对象,用给定的名称注册它,然后onRecieve()打开菜单

private BroadcastReceiver menuopenreciever = new BroadcastReceiver() {

@Override
public void onReceive(Context arg0, Intent arg1) {
           //open menu here


}

}

按如下方式注册接收方:

IntentFilter filter = new IntentFilter();
filter.addAction("net.yourapplication.menuopenreciever");
registerReceiver( menuopenreciever, filter);

从服务调用这个 sendBroadcast(new Intent("net.yourapplication.menuopenreciever"));

我还没有尝试过,但请告诉我,希望这会有所帮助

于 2012-03-31T13:11:56.643 回答