2011-02-05 12 views
3

私はアプリケーションを作成するためにAndroidを使用しています。私は項目1をクリックするとメニューオプションをクリックしてコンテキストメニューを開く

<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:title="Item1" android:id="@+id/item1" /></menu> 

が、私は私の活動にonOptionsItemSelectedを使用します。 私は

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.mymenu, menu); 
    return true; 
} 

下のメニューは、XMLファイルからロードされるようなオプションメニューを作成する活性を有します次のようなクリックの後に作業してください:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch(item.getItemId()) { 
    case R.id.item1 : 
     // here, I would like to open a contextual menu 
     return true; 
    default : 
     return super.onOptionsItemSelected(item); 
    } 
} 

したがって、ユーザーがアイテム1をクリックすると、コンテキストメニューが開きます。まず、インターネット上のいくつかのチュートリアルのように、画面上にホールドポジションを使わずにコンテキストメニューを直接開くことができるかどうかは分かりません。

どうすればコンテキストメニューを開くことができますか?

私のアイテム1の場合、registerForContextMenu()openContextMenu()を使用すると考えましたが、どのビューをパラメータに入れてください。

誰かがそれを作る方法について考えているなら、どうすればいいか分かります。

答えて

4

本当にコンテキストメニューが必要な場合は、そのアイテムを長押ししてAndroidでデザインされたコンテキストメニューを使用します。人々はこれに慣れており、アプリはその点で違うべきではありません。

オルタナティブは少し複雑です。あなたができることは、メニューを別のアクティビティにロードして、ダイアログウィンドウとしてスタイルを設定することです(半透明の背景が薄くなっています)。これは、簡単のmanifest.xmlファイルにあなたの活動にTheme.Dialogスタイルを適用することによって行うことができる。

<activity android:name=".activities.TagPopupActivity" 
      android:label="Tagging" android:theme="@android:style/Theme.Dialog"> 
       ... 
</activity> 

hereが説明するように別の方法としては、直接ダイアログウィンドウを作成することができます。次に、メインリストのアクティビティに適切なクリックリスナを実装してコンテキストを取得し、ユーザがアイテムをクリックすると、そのIDを取得し、それをあなたの "メニュー"に転送するバンドルにパッケージ化します。ポップアップダイアログのようなスタイルになっています。

+1

あなたの答えをありがとう。 実際、Androidから始まります。だから私は物事を作るベストプラクティスが何であるかをよく知らない。 私の頭には2つの可能性がありました。まず、コンテキストメニューを作成しましたが、明らかにユーザーエクスペリエンスについては良い考えではありません。 次に、コンテキストメニューでユーザーに提案したいという選択肢を表示するアイテムをクリックして、新しいアクティビティを開始すると考えました。おそらくそれは良い考えです。 私は第2のアイデアをコーディングするつもりだと思います。 – sylsau

+3

Googleのアプリケーションでさえ、メニュー項目からコンテキストメニューを開くので、長押しがそれを実装する適切な方法であるとは思わないと思います。 –

+0

「メニューオプション項目をクリックしてコンテキストメニューを開く」の回答はどこですか? –

2

私は投稿が古いことを知っていますが、ここに別の解決策があります(すばらしいが、本当にセクシーではありません)。

視界がなくなるように仮想視点を追加し、このビューを使用してコンテキストメニューをトリガーします。

関連する問題