2013-05-16 53 views
0

我有一個共同的佈局,我在我所有的活動中使用。在標題佈局中,我包含了一個imageview,並且在這個imageview的xml佈局中指定了一個onclick方法。android onClick for imageview未解僱

在我的一個活動中,這個imageview的onclick沒有在java代碼中被觸發。以下是活動的佈局我指的是:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" > 

<LinearLayout 
    android:id="@+id/bottom_layout_main" 
    android:layout_width="fill_parent" 
    android:layout_height="50dp" 
    android:layout_alignParentBottom="true" 
    android:orientation="horizontal" 
    android:padding="5dp" > 

    <RelativeLayout 
     android:id="@+id/btn_layout_main" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:gravity="center" 
     android:orientation="horizontal" > 

     <Button 
      android:id="@+id/exit_createprofile" 
      android:layout_width="100dp" 
      android:layout_height="50dp" 
      android:layout_marginRight="5dp" 
      android:background="@drawable/custom_button" 
      android:onClick="onCreateExitClick" 
      android:text="Exit" 
      android:textSize="14dp" /> 

     <Button 
      android:id="@+id/save" 
      android:layout_width="100dp" 
      android:layout_height="50dp" 
      android:layout_marginLeft="5dp" 
      android:layout_toRightOf="@id/exit_createprofile" 
      android:background="@drawable/custom_button" 
      android:onClick="onCreateSaveClick" 
      android:text="Save" 
      android:textSize="14dp" /> 
    </RelativeLayout> 
</LinearLayout> 

<LinearLayout 
    android:id="@+id/top_layout" 
    android:layout_width="fill_parent" 
    android:layout_height="50dp" 
    android:layout_alignParentTop="true" 
    android:layout_weight="1" 
    android:background="@color/light_grey" 
    android:gravity="top" 
    android:orientation="horizontal" > 

    <include 
     android:id="@+id/includeTitle" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     layout="@layout/titlebar_layout" /> 
</LinearLayout> 

<ScrollView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/scrollView" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:paddingTop="40dp" > 

    <br.com.dina.ui.widget.UITableView 
     android:id="@+id/profileList_create" 
     style="@style/UITableView" 
     android:layout_height="wrap_content" /> 
</ScrollView> 

,並在指定的佈局包括是:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
style="@style/list_item_top" 
android:layout_width="match_parent" 
android:layout_height="60dp" 
android:background="@color/background_grey" 
android:orientation="horizontal" > 

<ImageView 
    android:id="@+id/imgBack" 
    android:layout_width="28dp" 
    android:layout_height="28dp" 
    android:onClick="onBackClick" 
    android:src="@drawable/arrow_back" /> 

<TextView 
    android:id="@+id/txtTitle" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:gravity="center_horizontal" 
    android:textColor="@android:color/black" 
    android:textStyle="bold" 
    android:textSize="18sp" /> 



</LinearLayout> 

我甚至試過,在活動中使用下面的代碼,但仍然,onclick不被解僱:

backImage = (ImageView)layout.findViewById(R.id.imgBack); 
    backImage.setClickable(true); 
    backImage.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      Toast.makeText(getApplicationContext(), "Title back clicked", Toast.LENGTH_SHORT).show(); 
     } 
     }); 

我沒有線索,爲什麼這個o nclick沒有被解僱。任何幫助深表感謝。

這裏是我的屏幕:

enter image description here

+0

_IN我的活動之一,的onclick這個ImageView的不fired_ ---這是否意味着它正在開發一些其他的活動? – ozbek

+0

是的,它在其他工作 – user1400538

+0

這就是說這個問題最有可能與特定的「活動」。它的「擴展」或「實現」比其他的有什麼不同? – ozbek

回答

1

請試試這個

backImage = (ImageView)findViewById(R.id.imgBack); 
backImage.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     Toast.makeText(getApplicationContext(), "Title back clicked", Toast.LENGTH_SHORT).show(); 
    } 
    }); 
+0

上面沒有運氣! – user1400538

+0

getApplicationContext()? –

+0

@PareshMayani:你能說清楚你的意思嗎? – user1400538

1

如果您的ImageView是在包含佈局比試試這個

LinearLayout layout=(LinearLayout)findViewById(R.id.includeTitle); 

然後

backImage = (ImageView)layout.findViewById(R.id.imgBack); 
+0

上面沒有運氣! – user1400538

+0

@ user1400538在您的xml中刪除'android:onClick =「onBackClick」'屬性或在您的活動 – Pragnani

+0

中採用'onBackClick(View v)'方法仍然沒有運氣。 – user1400538

2

在您的ImageView的XML佈局中添加android:clickable="true"

OR

backImage.setClickable(true); 
+0

沒有運氣與上面的.. – user1400538

+1

@ user1400538從ImageView佈局中移除focusable。 –