我创建了要从按钮单击动态添加到布局的视图,但是当我旋转设备格局时,视图会消失。有人可以看看我的代码并解释如何阻止这种情况发生。
以下是代码:
public class TestContainerActivity extends Activity implements OnClickListener {
LinearLayout containerLayout;
Button testButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test_container);
testButton = (Button)findViewById(R.id.testContainerButton1);
testButton.setOnClickListener(this);
containerLayout = (LinearLayout)findViewById(R.id.testContainerLayout);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.test_container, menu);
return true;
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(v==testButton){
createNewLayout();
}
}
public void createNewLayout(){
LayoutInflater layoutInflater = (LayoutInflater) getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View addView = layoutInflater.inflate(R.layout.container, null);
TextView textviewTest = (TextView)addView.findViewById(R.id.containerTextView4);
textviewTest.setText("TextView");
containerLayout.addView(addView);
}
}
答案 0 :(得分:3)
在manifest.xml标签中添加此行。
android:configChanges="keyboardHidden|orientation|screenSize"
这样可以避免您的活动在方向更改时重新创建。
答案 1 :(得分:1)
最好尝试在新方向中重新创建布局,而不是仅仅阻止方向更改。
在你的onCreate中检查是否有保存的实例(由于方向改变),例如
if (savedInstanceState == null) {
//create new button layout if previously clicked
}
else {
//normal start
}
您可能需要保留一些值(在Shared Prefs或onSavedInstanceState中)。
这种方法比锁定方向更困难,但从长远来看这是一种更好的方法,值得研究工作。
答案 2 :(得分:-1)
将以下行添加到 TestContainerActivity 活动
android:ConfigChanges="keyboardHidden|orientation"