1

メニューに問題があります。

縦横のボタンでいっぱいの背景レイアウトがあります。次のようになります: http ://s7.directupload.net/file/d/3081/sewg79tr_png.htm

したがって、新しいゲーム(新しいインテント)を開始して戻るボタンを押すと、画面レイアウトが壊れて、本当にひどいように見えます: http ://s14.directupload.net/file/d/3081/ewfeidya_png.htm

別のアプリに切り替えてメニューに戻ると、レイアウトは起動時のように見えます。すべて順調。

すべてのボタンを削除してonResumeでレイアウトを再入力しようとしていますが、機能せず、理由がわかりません。System.outは正しく機能しますが、アプリを切り替えたときにのみレイアウトがリセットされます。

誰かが問題を知っていますか?

編集:背景ボタンのOnClickListenerは、クリックされたボタンの背景画像を変更しました。このOnClickListenerは、ひどい壊れたレイアウトでも機能します。

@Override
public void onResume() {
    super.onResume();
    LinearLayout buttonBackgroundLayout = (LinearLayout) findViewById(R.id.buttonHintergrundLayout);
    //int count = buttonBackgroundLayout.getChildCount();
    //System.out.println(count);
    //for (int i = 0; i < count; i++) {
    //    View child = buttonBackgroundLayout.getChildAt(i);
    //    if (child instanceof View) ((ViewGroup) child).removeAllViews();
    //}
    buttonBackgroundLayout.removeAllViewsInLayout();
    buttonBackgroundLayout.invalidate();

    createButtonImages(breite);
    createBackgroundButtons(breite);
    System.out.println("WOOOHOOO");
}

編集:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    buttonBackgroundLayout = (LinearLayout) findViewById(R.id.buttonHintergrundLayout);

    createButtons();        

    DisplayMetrics display = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(display);
    breite = display.widthPixels;

    createButtonImages(breite);
    createBackgroundButtons(breite);
}
4

3 に答える 3

1

onResume() ですべてのビューを削除する必要はありません。レイアウトに関する限り、これで十分です。

@Override
public void onResume() {
    super.onResume();
    setContentView(R.id.buttonHintergrundLayout);

}

また、すべての onClickListners をここで設定することもできます。ただし、ここで設定したものはすべて onPause() で削除する必要があります。ただし、特に既に配置されているビューを使用している場合は特に、ビューの設定は基本的に無料です。

于 2012-11-21T14:28:18.667 に答える
0

LinearLayout buttonBackgroundLayout = (LinearLayout) findViewById(R.id.buttonHintergrundLayout);

これを onCreate に移動し、buttonBackgroundLayout のインスタンスを 1 つだけ作成して使用します (グローバルに宣言します)。

問題は、ビューの複数のインスタンスが作成されることだと思います

于 2012-11-21T14:28:29.137 に答える
0

うーん、別の電話 (Samsung) では正反対です。起動時は見栄えが悪く、スタートゲームから再開した後は見栄えが良く、別のアプリに切り替えた後は見栄えが悪くなります... えっ!?

于 2012-11-21T15:39:37.853 に答える