一个对话框,我不需要在一个活动的创建对话框的代码。 我使用opengles,并使用我创建的渲染器类进行绘制。我认为在android活动窗口执行停留在主要活动。 我有我的绘画状态,当绘制到达我想发布一个对话框的状态。所以有一个问题,因为对话框构建器需要一个上下文,并且渲染器类不是一个活动对象。 我在opengles新首先我要做的工作在 方法存在安卓使从非UI的活动类
public void onDrawFrame(GL10 gl)
{ }
,所以我有2类1 ui类
mainactivity extends activity
和第二渲染类
class mainrenderer implements GLSurfaceView.Renderer
我想从第二类中使用活动操作,如创建对话框。 你能给我一个解决方案吗? 谢谢。
换句话说,我从一个类(渲染)想,是不是UI类做一个对话框。
编辑
我通过为myrender = new Renderer1(this);
我的活动类 的背景下,在渲染器的构造,我有
class Renderer1 implements GLSurfaceView.Renderer
/* initializations */
public Renderer(Context context) {
super();
mcontext = context;
}
之后,我有实现on drawFrame
方法,当我到达状态i拨打以下
public void alertdialogbox() /* some code */ AlertDialog.Builder
builder = new AlertDialog.Builder(mcontext);
01给出
alertdialogbox()
该方法
,但是当到达该alertdialogbox呼吁,国家它使示数和应用程序崩溃
误差与
了java.lang.RuntimeException开始:内螺纹无法创建处理程序 已经不叫Looper.prepare()
编辑2解决 我在主活性初始化处理程序为:
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
alertdialogbox();
}
};
alertdialogbox是,我声明主要活动类 内部的方法,并再次构建对话框
其中i实例化GlsurfaceView和Glrenderer 我通过我之前,所以初始化处理程序的主要活动内:
Renderer = new Renderer1(handler);
after that at the class Renderer1
class Renderer1 implements GLSurfaceView.Renderer
Handler mhandler;
public Renderer(Handler handler) {
super();
mhandler = handler;
}
*
*
public void onDrawFrame(){
*
*
if (state)
{
alertdialogbox();
}
}
*
*
public void alertdialogbox()
{
mhandler.sendEmptyMessage(1);
}
最后我有我的对话框查看。
感谢suggetions。
您可以创建一个方法makeDialog,它将'context'作为参数,或者当创建'MainRenderer'传递一个上下文以将其作为类字段。如果不知道你打算如何使用代码,很难写出更具体的答案:) – yoshi 2012-08-16 09:22:25
如果你编辑你的问题并在那里写代码,它会更容易阅读。此外,对于崩溃,提供错误和它的堆栈跟踪是很好的,因为这是所有信息的地方:o) – yoshi 2012-08-16 09:57:21
您的渲染器类不在UI线程上执行,因此是错误。我建议你看一下'Handler'类。在主要活动中创建一个处理程序,并在创建时将其传递给渲染器。然后使用这个处理程序来创建对话框。 – 2012-08-16 10:45:03