0

我为测量设备编写了一个手机界面。我在 GLSurfaceViews 中有一堆不同的功能屏幕。我可以正确启动渲染,但我不知道如何使后退按钮起作用。我的渲染代码如下所示:

Button mSpecButton = new Button(this);
mSpecButton.setText("Spectrometer");
mSpecButton.setOnClickListener(new View.OnClickListener()
{
    public void onClick(View v)
    {
        glSurfaceView = new GLSurfaceView(mRun);
        mRender = new renderSpectro(mRun);
        glSurfaceView.setRenderer(mRender);
        setContentView(glSurfaceView);
    }
});

我不知道在哪里放一个public boolean onKeyDown(int keyCode, KeyEvent event)

4

1 回答 1

0

onKeyDown()方法必须放在活动中。如果您想使用它来控制 GLSurfaceView 或 Renderer,您必须使用其他方式将其发送到那里。例如,在您的主要活动中,您可以拥有:

//Somewhere in the code
GLSurfaceView glSurfaceView = new myGLSurfaceView();

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    glSurfaceView.doBackAction(); //Or something similar
}

而在你的myGLSurfaceView你只有一个方法:

public void doBackAction() {
    //Yay
}

如果您担心线程安全,它会变得有点复杂,但初始onKeyDown()必须在活动中。

于 2012-05-05T02:16:23.360 回答