2011-07-21 7 views
-6

コンテキストメニューを起動するには、戻るボタンを無効にする必要があります。「戻る」キーがヒットしたときにContextMenuを起動しますか?

私は 'ケースKeyEvent.KEYCODE_BACK:' 内からのContextMenuを呼び出すことができますどのように

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) 
{ 
    switch (keyCode) 
    { 
    case KeyEvent.KEYCODE_BACK : 

     return true; 
    } 

    return super.onKeyDown(keyCode, event); 
} 


     @Override 
    public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) { 
super.onCreateContextMenu(menu, v, menuInfo); 
    menu.setHeaderTitle("Quit"); 
    menu.add(0, v.getId(), 0, "Yes"); 
    menu.add(0, v.getId(), 0, "No"); 

} 
    @Override 
    public boolean onContextItemSelected(MenuItem item) { 
      if(item.getTitle()=="Yes"){quit(0);} 
      if(item.getTitle()=="No"){quit(1);} 
     else {return false;} 
    return true; 
    } 

がありますか?メソッド

@Override 
public void onBackPressed() { 
    //Your code here 
} 
+15

http://commonsware.com/blog/2011/07/21/back-means-back.html – CommonsWare

+2

@CommonsWare:私はそれがそういう人について暴言を言うのは特に丁寧だとは思わない。 –

+1

はい、私はユーザーが戻るボタンを押してセッションの途中で終了しても喜んではいませんが、理解しています。これを使用して、ユーザーがメインメニューに戻るかどうかの確認を求めています。 – jblz

答えて

0

使用openContextMenu:あなたは、あなたがコンテキストメニューを開いていたいビューに渡す必要がありますが、それはうまくいくはずです。

+0

ありがとうございました - 私は手動でビューを渡すことはありませんでした。私は通常、 'onCreateContextMenu'のようなメソッドで 'View v'として渡されることを確認します。現在のビューを定義/参照するにはどうすればよいですか?ありがとうございました – jblz

+0

まあ、コンテキストメニューは特定のビュー用です:通常はListViewです。関連するViewのコンテキストメニューを取得するために、 'findControllerMenu'を' findViewById(R id。 – Femi

-1

オーバーライドは、私はわからないが、私はのContextMenuは、特定のビューで開いている必要がありますので、あなたが戻るキーのContextMenuを開くことができませんと思います。

しかし、あなたは戻るキー上の任意のダイアログを開くことができますが、コードの下に表示さ

@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_BACK) 
     { 
      //Your Dialog Code 
      return true; 
     } 
     return super.onKeyDown(keyCode, event); 
    } 
+0

ありがとう、どういうわけか、コンテキストメニューをどう呼びますか? AFAIKを呼び出す唯一の方法は 'registerForContextMenu()'です – jblz

0

をonBackPressed

0

これは、ユーザーが戻るボタンをクリックしたかどうかを検出します。

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) 
{ 
    // Checks if back key was clicked and if it was clicked only once 
    // since multiple clicks could be configured in android for other functions 
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) 
    { 
     // Code to open contextmenu 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 

ThisView.openContextMenu()の使用に関する情報を提供します。

0

メニューを開くにはActivity.openOptionsMenu()に電話するだけです。

 @Override 
public boolean onKeyDown(int keyCode, KeyEvent event) 
{ 
    switch (keyCode) 
    { 
    case KeyEvent.KEYCODE_BACK : 
     MyActivity.this.openOptionsMenu(); 
     return true; 
    } 

    return super.onKeyDown(keyCode, event); 
} 

希望すると、これが役立ちます。

+0

ありがとうございますが、私は自分の活動に活動を変更しませんでした。私のコードの残りの部分(バックキーを押した状態でテストするためにトーストメッセージを追加しました)は正常に実行されます。上記のコードは、残念なことにクリックしても何もしないようです。私のonCreateContextMenuとonContextItemSelectedもうまく表示されます。あなたの入力をありがとう – jblz

+0

そのために 'onCreateOptionsMenu'を作成してオーバーライドする必要があります。 –

+0

もう一度お手伝いをしていただきましたが、画面の下部に表示されるオプションメニューとは対照的に、画面の中央にポップアップする 'コンテキストメニュー'があります。私は、通常、 'メニュー'が押されたときにonCreateOptionsMenuが出てくると思います。 – jblz

関連する問題