1

ICSのアクションバーについて学びました。私はAction Bar Sherlockと協力して、私がやりたいことを下位互換性があり、サンプルのソースコードをたくさん使っています。どのようなビューが私のActionModeをトリガしたかを知るには?

私は3つの画像ビューを持っています。すべてのボタンを長時間クリックするとリスナーを設定したいと思います。ユーザーが長いボタンをクリックすると、アクションバーの上にActionModeが表示され、アクションバーはメニューのように機能するように見えるので、ボタンをクリックした後でImageModeがどのように私のActionModeをトリガしたのかをどのように知ることができますか?

私はちょうどそれを調べ始めているので、多くのコードを実行してはいけません。これが最初にやりたいことでした。

答えて

6

アクションモードを開始するには、ActionMode.Callbackクラスのインスタンスを指定する必要があります。このような場合は、このクラス内にコンストラクタを作成して、画像ビューに関する関連情報を受け入れる必要があります。

public static class ImageActionMode extends ActionMode.Callback { 
    private final int viewId; 

    public ImageActionMode(View view) { 
     viewId = view.getId(); 
    } 

    public boolean onActionItemClicked (ActionMode mode, MenuItem item) { 
     //Do something with viewId as the target 
    } 

    //Other callbacks 
} 

また、あなたはオプション項目に対応するために必要なものであるフルImageViewまたは何か他のものへの参照を保つことができます。

public void onLongPress(View view, /*whatever else...*/) { 
    startActionMode(new ImageActionMode(view)); 
} 
+1

onOptionsItemSelectedあなた 'パブリックブール(MenuItemの項目)' { //ターゲット としてのviewIdで何かを行う}それは 'onActionItemClicked(ActionModeモード、MenuItemの項目)' –

+0

おっとする必要があります!うん、それはすべきだ。私は答えを更新しました。 –

+0

箱から何も提供されていませんか?それはおかしい。 – JaydeepW

0

それにいくつかの時間を過ごした後、私はそれを実装し、正常に働いてきた:

は今、あなたは、あなたがこのような何かを考え、アクションモードを起動したとき。 以下のリンクで、私は正しいコードと説明を与えました。

https://stackoverflow.com/a/20369954/452487

関連する問題