我有一個活動,對於佈局中的每個小部件,我調用setOnClickListener()來分配我的OnClick()處理函數。在我的OnClick()處理程序中,我使用switch語句根據View參數的ID爲每個按鈕執行所需的代碼。有沒有辦法將默認處理程序分配給主視圖,而不必對視圖中的每個小部件進行單獨的偵聽程序分配調用?我可以爲Android活動分配「默認」OnClickListener()嗎?
============================================== ==
UPDATE
由於我已經編寫了其具有設置單擊處理程序中的活動的所有視圖元素共同單擊處理一個靜態方法的類的完整實現kcoppock的起始樣品。這適用於那些佈局簡單並且想要在使用基於View參數對象的ID的switch語句的常見click listener事件中執行所有事件處理的情況。要在Activity中使用它,只需撥打Misc.setDefaultClickHandler(this,this)。當然你的Activity需要實現View.OnclickListener接口。
package {put your package name here};
import android.app.Activity;
import android.view.View;
import android.view.ViewGroup;
public class Misc {
public Misc() {
super();
}
// Returns the root view for a given activity.
public static View getRootView(Activity activity) {
return activity.findViewById(android.R.id.content).getRootView();
}
private static void assignClickHandler(View root, View.OnClickListener theOnClickListener) {
// Is it a View or a View group?
if (root instanceof ViewGroup) {
// It's a ViewGroup, process all it's children.
ViewGroup vg = (ViewGroup) root;
for(int i = 0; i < vg.getChildCount(); i++)
// Make recursive call.
assignClickHandler(vg.getChildAt(i), theOnClickListener);
}
else
{
// Child is a View. Set the desired context for the click handler.
root.setOnClickListener(theOnClickListener);
}
}
public static void setDefaultClickHandler(Activity activity, View.OnClickListener theOnClickListener) {
assignClickHandler(getRootView(activity), theOnClickListener);
}
}
- roschler
你的意思是每個按鈕都會共享一個onClickListener? – 2011-04-23 02:25:14