ボタンを押さずにサービスからオプションメニューを開かなければならないAndroidアプリケーションを開発しています。私はこれを試しました
Activity.openOptionsMenu();
ただし、「Activity型から非静的メソッドopenOptionsMenu()への静的参照を作成できません」というエラーが表示されます。
どんな助けでも!! ありがとうございました 。
ボタンを押さずにサービスからオプションメニューを開かなければならないAndroidアプリケーションを開発しています。私はこれを試しました
Activity.openOptionsMenu();
ただし、「Activity型から非静的メソッドopenOptionsMenu()への静的参照を作成できません」というエラーが表示されます。
どんな助けでも!! ありがとうございました 。
まず、これは直接不可能です。サービスは、アクティビティのオプションメニューにアクセスできません。フォアグラウンドであなたの活動さえないかもしれません。
次に、Android 3.0以降に移行すると、すべてのデバイスにオプションメニューが表示されるわけではありません。
第3に、Android 1.xおよび2.xデバイスの場合でも、オプションメニューを開く必要があるのは、ユーザーがMENUボタンを押すためだけです。それ以外のものは、UXの観点から非常に疑わしいものです。
サービスが自分のフォアグラウンドアクティビティに接続して(たとえば、にBroadcastReceiver
接続してLocalBroadcastManager
)、バックグラウンドで何かが発生したことをそのアクティビティに通知することを歓迎します。このアクティビティは、ユーザーにとって意味があり、今日および明日のデバイスで機能する何らかの方法で、このイベントをユーザーに通知することを歓迎します。
私はこれを自分で試したことはありませんが、アクティビティ関連のオブジェクトを呼び出すには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"));
私はこれを試していませんが、私に知らせてください、これが役立つことを願っています