如何在onclick事件上执行两种类型的侦听器?

时间:2012-01-09 06:51:35

标签: android onclick

在我的应用程序中有一个面板和一个线性布局。用户可以单击面板或布局。但是当用户单击“线性”布局时,我需要执行panellistener事件。我怎么能在android中做到这一点?

这是我的代码。

public class FindTables extends Activity implements OnPanelListener, OnClickListener {

LinearLayout overlay;
Panel panel;

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.findtables);

    overlay = (LinearLayout) findViewById(R.id.overlay);
    overlay.setOnClickListener(this);

    panel = (Panel) findViewById(R.id.topPanel);
    panel.setOnPanelListener(this);
    panel.setInterpolator(new ExpoInterpolator(Type.OUT));

}

@Override
public void onPanelClosed(Panel panel) {
    // overlay.setVisibility(View.GONE);
    String panelName = getResources().getResourceEntryName(panel.getId());
    Log.d("TestPanels", "Panel [" + panelName + "] closed");

}

@Override
public void onPanelOpened(Panel panel) {

    String panelName = getResources().getResourceEntryName(panel.getId());
    Log.d("TestPanels", "Panel [" + panelName + "] opened");

}

@Override
public void onClick(View v) {
    switch (v.getId()) {
        case R.id.overlay:
            overlay.setVisibility(View.GONE);

            break;

        default:
            break;
    }

}

}

提前致谢!

1 个答案:

答案 0 :(得分:0)

嗯,最明显的解决方案是从你的onClick方法调用适当的OnPanelListener方法(例如onPanelOpened或onPanelClosed):

@Override
public void onClick(View v) {
    switch (v.getId()) {
    case R.id.overlay:
        overlay.setVisibility(View.GONE);
        onPanelOpened((Panel) findViewById(R.id.topPanel));
        break;

    default:
        break;
    }
}
相关问题