私は GameView という名前のビューを拡張するクラスを持っています。MainActivity では、それを contentView として配置します。
if(Const.gameView == null){
Const.gameView = new GameView(this);
Const.gameView.setViews(Const.chickenArr,Const.chickenViewArr,message,score_message , this.importantMessage , this.showTimerMessage);
setContentView(Const.gameView);
}
ここで問題に直面します。アクティビティを終了して戻ってきたら、GameView をもう一度表示したいと思います。
上記のコードを使用すると、再度 MainActivity に戻ったときに、自分の gameView が表示されませんでした。setContentView(Const.gameView); を設定してコードを変更すると、「if」の外側でエラーが発生します
11-10 22:17:35.821: E/AndroidRuntime(1580): Caused by: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
私は何をすべきか?
ゲームビュー:
public GameView(Context context) {
super(context);
int picture = Const.a1;
if(backgroundBitmap == null)
backgroundBitmap = BitmapFactory.decodeResource(getResources(), picture);
// TODO Auto-generated constructor stub
}
public void setViews(Chicken[] chickenArr, ChickenView[] chickenViewArr,Messages message , Messages messageScore,
Messages gameoverMes , Messages showRemailTimeMes) {
this.chickenArr = chickenArr;
this.chickenViewArr = chickenViewArr;
this.message=message;
this. messageScore = messageScore;
this.gameoverMes =gameoverMes;
this.showRemailTimeMes=showRemailTimeMes;
}
@Override
public void onDraw(Canvas canvas)
{
canvas.drawBitmap(this.backgroundBitmap, 1, 1, null);
//meassage
this.message.onDraw(canvas);
......
}