1

ICSアクションバーについて学習したと述べました。私はActionBarSherlockと協力して、やりたいことに対して下位互換性を持たせ、サンプルの多くのソースコードを調べてきました。

3つの画像ビューがあります。3つすべてをロングクリックするリスナーを設定したいと思います。ユーザーが1つをロングクリックすると、アクションバーの上にActionModeが表示され、写真を撮ることができます。アクションバーはメニューと同じように機能するように見えるので、ボタンをクリックした後、どのImageViewがActionModeをトリガーしたかをどのように知ることができますか?

私はそれを調べ始めたばかりであり、これが私が最初にやりたかったことだったので、今は多くのコードを実行していません。

4

2 に答える 2

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));
}
于 2012-02-11T02:02:22.923 に答える
0

しばらく時間をかけて実装し、正常に動作しました。以下のリンクで、正しいコードと説明を提供しました。

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

于 2013-12-04T07:57:20.033 に答える