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);

}

您可能还想在此处设置所有 onClickListner。但是你在这里设置的任何东西,你都应该在 onPause() 中删除。但是,设置视图基本上是免费的,特别是如果您只是使用已经存在的视图。

于 2012-11-21T14:28:18.667 回答
0

嗯,在另一部手机(三星)上恰恰相反。在启动时它看起来很糟糕,从startet游戏恢复后它看起来不错,在不同应用程序之间切换后它看起来很糟糕...... Wtf!?

于 2012-11-21T15:39:37.853 回答
0

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

将此移至 onCreate 并仅制作和使用 buttonBackgroundLayout 的一个实例(全局声明)

我想问题是创建了多个视图实例

于 2012-11-21T14:28:29.137 回答