2

Actionbarsherlockのカスタムレイアウトで定義されているimageviewをクリック可能にしようとしています。私のアクティビティは最初にレイアウトを設定します:

setContentView(R.layout.myLayout);

actionbar_layoutは、次のような同じアクティビティで設定されます。

View cView = getLayoutInflater().inflate(R.layout.actionbar_layout,
            null);
    actionBar.setCustomView(cView);

実際のactionbar_layoutは次のようになります。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left"
android:orientation="horizontal" >

<ImageView
    android:id="@+id/actionBarLogo"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_vertical"
    android:paddingBottom="50dp"
    android:paddingLeft="10dp"
    android:paddingRight="50dp"
    android:paddingTop="50dp"
    android:scaleType="centerCrop"
    android:src="@drawable/logo" />

</LinearLayout>

これを追加する:

actionBarLogo.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            //code 
        }
    });

この行のNullpointer例外が発生します。

actionBarLogo.setOnClickListener(new View.OnClickListener()

カスタムレイアウトは問題なく機能します。画像ビューをクリック可能にする必要があります。これを修正する方法はありますか?アクティビティは、actionbar_layout.xmlで定義されているactionBarLogo IDへの参照をどのように取得できますか?

4

3 に答える 3

3

次のようなことを試してください:

//your code
View cView = getLayoutInflater().inflate(R.layout.actionbar_layout,
        null);
actionBar.setCustomView(cView);

ImageView actionBarLogo = (ImageView) cView.findViewById(R.id.actionBarLogo);

actionBarLogo.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        //code 
    }
});

それはうまくいくはずです。

于 2013-01-31T17:19:06.520 に答える
2

ImageView の代わりに ImageButton を使用する

<ImageButton
    android:id="@+id/actionBarLogo"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_vertical"
    android:paddingBottom="50dp"
    android:paddingLeft="10dp"
    android:paddingRight="50dp"
    android:paddingTop="50dp"
    android:scaleType="centerCrop"
    android:onClick="somemethod"
    android:src="@drawable/logo" />
于 2013-02-01T05:17:45.063 に答える
0

私があなたの問題を理解している限り、ビューの一部でもウィンドウ装飾の一部でもないため、目的のビューにアクセスすることはできません。この投稿をチェックして、回避策を見つけてください: https://stackoverflow.com/a/10187801/1965084

于 2013-01-31T16:20:03.547 に答える