2012-02-12 72 views
0

我有RoomActivity和GameActivity。 RoomActivity監聽服務器命令。服務器可以發送2個命令:openGameActivity和closeGameActivity。 該命令必須僅在RoomActivity中運行。第一個命令我這樣做(RoomActivity類):轉到最後活動

if(request == "open") 
{ 
    Intent i = new Intent(this, GameActivity.class); 
    startActivity(i); 
} 

但我有第二個命令的問題。

if(request == "close") 
{ 
    //What I must do here to return back to RoomActivity? 
} 

結構: http://i.stack.imgur.com/asE6S.png

UPD 關於完成(); 我不能的使用它,因爲它的靜態方法: RoomActivity:

GameActivity.finishAct(); 

GameActivity:

public static void finishAct() 
{ 

    //this.onBackPressed(); 
    finish();//<====Cannot make a static reference to the non-static method finish() from the type Activity 

} 
+0

只需調用finish()或爲您的意圖使用CLEAR_TOP標誌 – Houcine 2012-02-12 18:52:15

+0

如何使用CLEAR_TOP? – Leo 2012-02-12 18:54:34

+0

intent.addFlag(FLAG_CLEAR_TOP);或者像這樣的事情,你會發現它在你的意圖標誌 – Houcine 2012-02-13 09:34:17

回答

1

剛剛結束致電Activity

finish(); 
+0

但它不是靜態方法! – Leo 2012-02-12 18:53:55

+0

保留對活動的引用並調用activity.finish(); – 2012-02-12 19:07:57

+0

如何保持它? – Leo 2012-02-12 19:24:15

0

呼叫finish

+0

但它不是靜態方法.. – Leo 2012-02-12 18:55:07

0

你可能會審查你的公司de將finishAct設置爲nonstatic。聲明和使用這種方法是沒有意義的。這也不是像活動打算實施

+0

但是如何使用非靜態方法? – Leo 2012-02-13 18:26:20

+0

您還必須更改方法/字段聲明。 '靜態'存在一組特定的原因,你沒有。如果您提供完整的代碼,我們會一起審查。也許你有這些靜態方法,因爲你不知道在哪裏保留對你的Activity的引用。如果是這種情況你有不同的選擇:修改一些構造函數來接受一個Activity參數(比如View)或者爲你的Activity使用一個Intent或者一個單例模式。但沒有代碼... – Raffaele 2012-02-14 11:37:16

+0

附件:https://sites.google.com/site/sokolovlev95/ActivityClose.rar – Leo 2012-02-14 13:28:42

0

不知道你是如何實現這些「命令」,因爲你沒有提供任何代碼,但如果你還沒有,我會建議使用你的服務的BroadcastIntent的。註冊GameActivity以聽取關閉廣播和RoomActivity的開放式遊戲廣播。

您在活動的onResume()方法中註冊BroadcastReceiver並在onPause()註銷它。

http://developer.android.com/reference/android/content/BroadcastReceiver.html

至於其他的都表示,一旦GameActivity接收廣播接近它可以簡單地調用finish()本身。