我的菜单有问题。
我的背景布局充满了垂直和水平按钮。看起来像这样: http://s7.directupload.net/file/d/3081/sewg79tr_png.htm
因此,当我开始一个新游戏(新的Intent)并按下后退按钮时,屏幕布局被打破并且看起来非常糟糕: 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);
}
答案 0 :(得分:1)
您不需要删除onResume()中的所有视图。就布局而言,这应该是您需要做的所有事情。
@Override
public void onResume() {
super.onResume();
setContentView(R.id.buttonHintergrundLayout);
}
您可能还想在此处设置所有onClickListners。但是你在这里设置的任何东西都应该在onPause()中删除。但是,设置视图基本上是免费的,特别是如果您只是使用已经存在的视图。
答案 1 :(得分:0)
LinearLayout buttonBackgroundLayout =(LinearLayout)findViewById(R.id.buttonHintergrundLayout);
将其移至onCreate并仅使用buttonBackgroundLayout的一个实例(声明它为globbaly)
我猜问题是创建视图的多个实例
答案 2 :(得分:0)