2012-03-31 8 views
0

私はボタンの押下なしにサービスからオプションメニューを開く必要があるAndroidアプリケーションを開発しています。私はこれを試しましたサービスのオプションメニューを開きますか?

Activity.openOptionsMenu();

しかし、「タイプActivityから)非静的メソッドopenOptionsMenu(static参照できません」というエラーが表示されている

すべてのヘルプ!ありがとうございました 。

答えて

2

まず、これは直接可能ではありません。サービスはアクティビティのオプションメニューにアクセスできません。あなたの前景にあなたの活動がないかもしれません。

第2に、Android 3.0以降に移行すると、すべての端末にオプションメニューが表示されるわけではありません。

第3に、Android 1.xおよび2.xデバイスであっても、オプションメニューを開く必要があるのは、ユーザーがMENUボタンを押したためです。それ以外は、UXの観点からは非常に疑わしいものです。

あなたのサービスは、バックグラウンドで何か起きたことを伝えるために、自分のフォアグラウンドのアクティビティ(BroadcastReceiverLocalBroadcastManagerなど)に連絡するようにしてください。その活動は、このイベントをユーザーに知らせることを歓迎しています。このイベントは、ユーザーにとって理にかなっており、現在のデバイスと将来のデバイスで動作します。

+0

に役立ちます願っています! – Ahmed

+0

@ user1155908:いいえ、私は良い考えではないと言っています。 – CommonsWare

+0

@ user1155908あなたは一日中歩くことは可能でしょうか?私はあなたができることを賭けるが、おそらくあなたはしないだろう。 –

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); 

をサービスコールからこのを0 sendBroadcast(new Intent("net.yourapplication.menuopenreciever"));

私はこれを試してみましたが、私に知らせていないが、これはあなたはそれが不可能であると言っている

関連する問題