2012-08-24 66 views
0

我無法解決這個熟悉的場景。android:如何訪問當前佈局中新使用佈局的視圖

在我的項目中,我使用的ActionBarSherlock和Search icon點擊我用自定義佈局替換ActionBar。問題是我怎樣才能得到onClickListener和所有從這個新的佈局的意見?

public boolean onCreateOptionsMenu(Menu menu) { 
menu.add("Search") 
     .setIcon(R.drawable.ic_search) 
     .setActionView(R.layout.on_search_icon_clicked) 
     .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS |MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW); 
     return true; 
} 

my on_search_icon_clicked.xml is: 

<?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" 
    android:orientation="vertical" > 

    <ImageView 
     android:id="@+id/search_image" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:layout_alignParentRight="true" 
     android:src="@drawable/ic_search" /> 

    <EditText 
     android:id="@+id/search_editText" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_toLeftOf="@id/search_image" 
     android:hint="@string/search" 
     android:singleLine="true" /> 

</RelativeLayout> 

現在如何得到這個search_image.setOnClickListener和所有?

它說NullPointerException如果我在我的onCreate中使用這個。

謝謝

+0

膨脹視圖,添加偵聽器並將視圖傳遞給菜單生成器而不是佈局編號 – sherpya

+0

http://developer.android.com/reference/android/view/MenuItem.html#setActionView%28android.view.View %29 而不是 http://developer.android.com/reference/android/view/MenuItem.html#setActionView%28int%29 – sherpya

+0

但有2個視圖顯示。 EditText和圖像。這就是爲什麼我使用佈局ID –

回答

1

我的意思是充氣的佈局,像

LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
View view = inflater.inflate(R.layout.on_search_icon_clicked, null, false); 
view.findViewById(R.id.search_image).setOnClickListener(...); 
menu.setActionView(view); 

我想你可以通過調用getLayoutInflater得到充氣也();

+0

看起來不錯。但它沒有工作:(我在我的問題中添加了代碼,但我沒有得到任何烤麪包: –

+0

嗯,這對我來說沒有太大意義,但我沒有直接測試類似的情況,嘗試調試應用程序將一個斷點放入onClick() – sherpya

+0

okay.some愚蠢的錯誤。它工作正常,非常感謝 –