一個對話框,我不需要在一個活動的創建對話框的代碼。 我使用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