public
class
GameActivity
extends
Activity
02.
{
03.
GameView gameview;
04.
private
boolean
f_Pause =
false
;
05.
private
boolean
f_Resume =
false
;
06.
public
void
onCreate(Bundle savedInstanceState) {
07.
super
.onCreate(savedInstanceState);
08.
09.
requestWindowFeature(Window.FEATURE_NO_TITLE);
10.
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
11.
12.
setContentView(R.layout.game);
13.
/*
14.
MediaPlayer player = MediaPlayer.create(this, R.raw.play);
15.
player.setVolume(0.8f, 0.8f);
16.
player.setLooping(true);
17.
player.start();
18.
*/
19.
20.
}
21.
22.
@Override
23.
public
void
onDestroy() {
24.
if
(f_Pause)
25.
;
26.
else
27.
super
.onDestroy();
28.
}
01.
@Override
02.
public
void
onResume() {
03.
if
(f_Pause)
04.
{
05.
f_Pause =
false
;
06.
gameview.resumeGame();
07.
}
08.
super
.onResume();
09.
}
10.
@Override
11.
public
void
onPause() {
12.
f_Pause =
true
;
13.
gameview.pauseGame();
14.
super
.onPause();
15.
}
1.
static
class
GameView
extends
SurfaceView
implements
Callback, Runnable {
1.
Activity안에 SurfaceView를 두고 코딩중입니다. 이 Activity가 실행되면 gameview가 활성화 되고,
다시 홈버튼이나 뒤로가기를 누르게 될경우 프로그램이 종료되면서
순서대로 onPause() -> onDestroy() 가 발생하게 되는데요.
제가 구현하고 싶은부분은 onPause() 가 호출될때 f_Pause = true로 하여 Pause 상태가 되었다고 표시를 하고,
View에서의 객체에서 pauseGame() 으로 View에서의 스레드를 멈춰주는 메소드를 호출한후에,
Destory()가 호출되면 Activity가 사라지지않고 백그라운드에 두고 다시 게임을 켯을때 Resume 처리를 해주고 싶습니다.
이 방식대로 하게되면 NullPointerError 가 나는데 어떻게 구현해야 할까요?
Log 내역입니다.
11-09 12:39:13.153: ERROR/AndroidRuntime(335): FATAL EXCEPTION: main
11-09 12:39:13.153: ERROR/AndroidRuntime(335): java.lang.RuntimeException: Unable to pause activity {com.android.game/com.android.game.GameActivity}: java.lang.NullPointerException
11-09 12:39:13.153: ERROR/AndroidRuntime(335): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2329)
11-09 12:39:13.153: ERROR/AndroidRuntime(335): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2286)
11-09 12:39:13.153: ERROR/AndroidRuntime(335): at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:2266)
11-09 12:39:13.153: ERROR/AndroidRuntime(335): at android.app.ActivityThread.access$1700(ActivityThread.java:117)
11-09 12:39:13.153: ERROR/AndroidRuntime(335): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:939)
11-09 12:39:13.153: ERROR/AndroidRuntime(335): at android.os.Handler.dispatchMessage(Handler.java:99)
11-09 12:39:13.153: ERROR/AndroidRuntime(335): at android.os.Looper.loop(Looper.java:123)
11-09 12:39:13.153: ERROR/AndroidRuntime(335): at android.app.ActivityThread.main(ActivityThread.java:3647)
11-09 12:39:13.153: ERROR/AndroidRuntime(335): at java.lang.reflect.Method.invokeNative(Native Method)
11-09 12:39:13.153: ERROR/AndroidRuntime(335): at java.lang.reflect.Method.invoke(Method.java:507)
11-09 12:39:13.153: ERROR/AndroidRuntime(335): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
11-09 12:39:13.153: ERROR/AndroidRuntime(335): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
11-09 12:39:13.153: ERROR/AndroidRuntime(335): at dalvik.system.NativeStart.main(Native Method)
11-09 12:39:13.153: ERROR/AndroidRuntime(335): Caused by: java.lang.NullPointerException
11-09 12:39:13.153: ERROR/AndroidRuntime(335): at com.android.game.GameActivity.onPause(GameActivity.java:84)
11-09 12:39:13.153: ERROR/AndroidRuntime(335): at android.app.Activity.performPause(Activity.java:3853)
11-09 12:39:13.153: ERROR/AndroidRuntime(335): at android.app.Instrumentation.callActivityOnPause(Instrumentation.java:1190)
11-09 12:39:13.153: ERROR/AndroidRuntime(335): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2316)
onCreate에서 gameView = (GameView)findViewById(R.id.gameview); 이런 문장이 있어야 하지 않을까요?