2012-03-10 82 views
2

我正在開發一個使用表面視圖來表示UI圖形的Android遊戲。如果用戶觸摸特定區域,我需要實施一種方法來啓動另一項活動。 爲此,我將主要(前景)活動的當前實例傳遞到表面視圖如何從非UI線程開始活動(從表面視圖繪製線程)

我可以輕鬆處理觸摸,但無法從接收的實例啓動活動。

**>如果我打電話startActivity從

當前活動例外的接收實例方法發生,指出其與非 UI線程**

我是一個呼叫使用擴展到表面視圖的類並傳遞到在其畫布上繪製的線程

+0

感謝小夥子們我想通了 我叫runOnUI從類實例,並將其完美作品 – Allahjane 2012-03-10 08:23:18

回答

3

SurfaceView是否在活動中? 如果是這樣,使用

runOnUiThread(new Runnable() { 
    public void run() { 
    //startActivity 
    } 
}); 

如果你不是你真的不應該開始其他活動的活動中..

而且SurfaceView設有驛站和postDelayed方法可以是使用上張貼的Runnable UI線程。

post(new Runnable() { 
     public void run() { 
     //startActivity 
     } 

    }); 
+0

在我的應用程序中,表面視圖的對象在活動中被實例化,然後對象被傳遞給活動的setContentView()方法 – Allahjane 2012-03-10 07:27:25

+0

我會認爲,如果它不直接在不應該開始其他活動的活動中,它應該將其委託給使用它的活動。我會實現一些界面,從Surfaceview響應某個事件(回調函數)。不過,我必須看到更多的代碼才能幫助你。 – 2012-03-10 07:32:00

+0

哪個類runOnUiThread()屬於? – Allahjane 2012-03-10 07:51:17

1

我認爲你可以做到這一點...

runOnUiThread(new Runnable() { 
        public void run() { 


      // start your activity here 


        } 
       }); 
+0

哪個類runOnUiThread()屬於? – Allahjane 2012-03-10 07:51:33

+0

不,線程類中沒有這樣的方法:( – Allahjane 2012-03-10 08:11:24

1

您可以使用:

// from MySurfaceView/Activity 
Context context = getContext(); 

//EffectingActivity is another activity 
Intent intent = new Intent(context, EffectingActivity.class); 
context.startActivity(intent);