2012-01-21 12 views
1

onPrepareOptionsMenu(Menu)メソッドから、たくさんのprocessng時間を消費するバックグラウンドスレッドがメニュー(メニューボタンではない)の表示とクリックをほとんど不可能にするので、私はメニューを表示しようとしていたときにスレッドを停止しました。スレッドが停止した後、メニューを表示してクリックすると(メニューボタンではなく)、はるかに管理しやすくなります。メニューが表示された直後に「戻る」キーが押されたときに問題が発生しました。ユーザーが 'back'キーを押すと、スレッドを再起動する必要があります。 public void onOptionsMenuClosed(Menu menu)メソッドを組み込むと、メニューが表示された直後に押された 'back'キーは、void onOptionsMenuClosed(Menu menu)メソッドを実行しました。しかし、メニューの1つからサブメニューを表示してから、「戻る」キーを押すと、void onOptionsMenuClosed(メニューメニュー)メソッドが実行されませんでした。誰かがこの質問に答えることができれば本当にありがたいです。onOptionsMenuClosed()は、メニューが表示された直後に '戻る'キーが押されたときに実行されます。 BUT

答えて

0

それが唯一のメインメニューサブませんメニューのために呼ばれています、ので、それが呼び出されていない..あなたはonOptionsItemSelected(MenuItem item)内のいくつかのフラグを追加するのではとのようなonBackPressed の内側に思うかもしれませんので:

boolean isSubMenuItemPressed; 
public boolean onOptionsItemSelected(MenuItem item) { 

    switch (item.getItemId()) { 

    case R.id.subMenuItem://the item that contains the submenu 

     isSubMenuItemPressed = true; 
    break; 
} 
} 

public void onBackPressed() { 
    if(isSubMenuItemPressed){// do what you want 
isSubMenuItemPressed = false;} 
} 
+0

時間を割いて非常に感謝し、質問に答えるあなたが提供したコードをテストします。 – user1161829

+0

私は、コードをテストせずに、メニューの1つからサブメニューの1つを表示してから、「戻る」キーを押すと、onOptionsItemSelected()メソッドは実行されないため、機能しません。どのサブメニューも選択せず、単に「戻る」キーを押すだけです。さらに、メニューボタンが押されている間は、フォーカスがアクティビティクラス(私の場合はMapActivity)にないので、onBackPressed()メソッドは動作しないと思います。 onPrepareOptionsMenuにブール値を設定し、onBackPressed()をチェックすることでそのシナリオをテストしました。 – user1161829

+0

あなたの答えがそのようになった理由を知りました。私はサブメニューの1つをクリックしなかったが、メニューの1つからサブメニューを表示してから、戻るキーを押す。 – user1161829

関連する問題