imageButton onClick未激活指定的方法

时间:2013-10-06 16:22:52

标签: android onclick imagebutton

我有两个图像按钮,它们引用了相同的openTheBag方法onClick。但是我现在无法理解的奇怪之处在于,当我点击@ id / purse时,imageButton会激活openBug,但@ id / red_pa​​int甚至不能被调试器看到。这里发生了什么,请帮忙。 这是xml的一部分。

    <FrameLayout android:id="@+id/frame" android:layout_weight="1.0"
            android:layout_width="match_parent" android:layout_height="0dip"
            android:background="@drawable/shelf_wall">
            <ImageButton android:id="@+id/purse" android:layout_width="67dp"
                android:layout_height="82dp" android:layout_gravity="right"
                android:contentDescription="@string/bag" android:onClick="openTheBag"
                android:scaleType="fitCenter" android:src="@drawable/purse"
                android:background="@null" />

            <ImageButton android:id="@+id/red_paint"
                android:layout_width="75dp" android:layout_height="112dp"
                android:layout_gravity="right" android:layout_marginRight="10dp"
                android:layout_marginTop="170dp" android:contentDescription="@string/red_paint"
                android:onClick="openTheBag" android:src="@drawable/kyzyl_paint"
                android:scaleType="fitCenter" android:adjustViewBounds="true"
                android:background="@null" />
</FrameLayout>

以下是方法openTheBag():

public void openTheBag(View view) 
{
     RelativeLayout storage = (RelativeLayout)this.findViewById(R.id.storage);
        storage.setVisibility(View.VISIBLE);
}

如果@ id / storage是相关的:

<RelativeLayout android:id="@+id/storage"
        android:layout_width="match_parent" android:layout_height="match_parent"
        android:orientation="horizontal" android:visibility="gone" >

        <ImageButton android:id="@+id/ImageButton07"
            android:layout_width="55dp" android:layout_height="55dp"
            android:layout_alignLeft="@+id/square1"             android:layout_alignTop="@+id/ImageButton03"
            android:adjustViewBounds="true" android:alpha=".4"
            android:src="@drawable/transparent_background" />

        <ImageButton android:id="@+id/ImageButton04"
            android:layout_width="55dp" android:layout_height="55dp"
            android:layout_alignLeft="@+id/ImageButton01"
            android:layout_alignTop="@+id/ImageButton07"
            android:adjustViewBounds="true" android:alpha=".4"
            android:src="@drawable/transparent_background" />

        <ImageButton android:id="@+id/square1"
            android:layout_width="55dp" android:layout_height="55dp"
            android:layout_above="@+id/ImageButton03" android:layout_marginLeft="11dp"
            android:layout_toRightOf="@+id/ImageButton02"
            android:adjustViewBounds="true" android:alpha=".4"
            android:src="@drawable/transparent_background" />

        <ImageButton android:id="@+id/ImageButton01"
            android:layout_width="55dp" android:layout_height="55dp"
            android:layout_alignTop="@+id/square1" android:layout_marginLeft="10dp"
            android:src="@drawable/transparent_background"
            android:layout_toRightOf="@+id/square1" android:adjustViewBounds="true"
            android:onClick="redSplashClicked" />

        <ImageButton android:id="@+id/ImageButton05"
            android:layout_width="55dp" android:layout_height="55dp"
            android:layout_above="@+id/ImageButton03" android:layout_marginLeft="11dp"
            android:layout_toRightOf="@+id/ImageButton01"
            android:adjustViewBounds="true" android:alpha=".4"
            android:src="@drawable/transparent_background" />

        <ImageButton android:id="@+id/ImageButton03"
            android:layout_width="55dp" android:layout_height="55dp"
            android:layout_below="@+id/ImageButton02" android:layout_marginTop="13dp"
            android:layout_toLeftOf="@+id/square1" android:adjustViewBounds="true"
            android:alpha=".4" android:src="@drawable/transparent_background" />

        <ImageButton android:id="@+id/ImageButton09"
            android:layout_width="55dp" android:layout_height="55dp"
            android:layout_alignLeft="@+id/ImageButton05"
            android:layout_alignTop="@+id/ImageButton04"
            android:adjustViewBounds="true" android:alpha=".4"
            android:src="@drawable/transparent_background" />

        <ImageButton android:id="@+id/ImageButton08"
            android:layout_width="55dp" android:layout_height="55dp"
            android:layout_alignTop="@+id/ImageButton05"
            android:layout_centerHorizontal="true" android:adjustViewBounds="true"
            android:alpha=".4" android:src="@drawable/transparent_background" />

        <ImageButton android:id="@+id/ImageButton06"
            android:layout_width="55dp" android:layout_height="55dp"
            android:layout_alignLeft="@+id/ImageButton08"
            android:layout_alignTop="@+id/ImageButton09"
            android:adjustViewBounds="true" android:alpha=".4"
            android:src="@drawable/transparent_background" />

        <ImageButton android:id="@+id/ImageButton02"
            android:layout_width="55dp" android:layout_height="55dp"
            android:layout_alignParentLeft="true" android:layout_alignParentTop="true"
            android:layout_marginLeft="11dp" android:layout_marginTop="10dp"
            android:adjustViewBounds="true" android:alpha=".4"
            android:src="@drawable/transparent_background" />

    </RelativeLayout>

2 个答案:

答案 0 :(得分:0)

为什么不尝试使用onClick()方法在代码中以编程方式调用事件。类似的东西:

ImageButton mBtnPurse = (ImageButton) findViewById(R.id.purse);
ImageButton mBtnRedPaint = (ImageButton) findViewById(R.id.red_paint);

mBtnPurse.setOnClickListener(this);
mBtnRedPaint.setOnClickListener(this);

让你的活动实现onClickListener,然后添加未实现的方法,这是onClick方法:

@Override
public void onClick(View v)
{
    if(v == mBtnPurse || v == mBtnRedPaint)
    {
        openTheBag(v);
    }
}

并从xml中的两个按钮中删除android:onClick="openTheBag"

答案 1 :(得分:0)

这可能是您的方法名称的错字

openTheBag()

openBag()