我制作了一个应用程序,每次按下按钮时,我都会在LinearLayout
中动态添加和删除textView。
我的问题是,当屏幕方向更改(重新启动 Activity )时,所有添加的textViews都消失了。我不知道如何保留LinearLayout
膨胀状态。
这是代码中初始化 View 和按钮的部分:
private LayoutInflater inflater;
private LinearLayout ll;
View view;
Button add;
Button delete;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
inflater = getLayoutInflater();
ll = (LinearLayout)findViewById(R.id.ll);
add = (Button)findViewById(R.id.bAdd);
delete = (Button)findViewById(R.id.bDelete);
add.setOnClickListener(this);
delete.setOnClickListener(this);
并在
onClick
方法上添加或删除textViews: @Override
public void onClick(View v) {
switch (v.getId())
{
case R.id.bAdd:
{
view = inflater.inflate(R.layout.sublayout,ll,true);
break;
}
case R.id.bDelete:
{
int childSize = ll.getChildCount();
if(0 != childSize) {
ll.removeViewAt(childSize -1);
}
Log.i("InflateLayout", "childsize: " +childSize);
}
}
}
最佳答案
您可以通过在由于配置更改而重新启动 Activity 时保留一个Fragment来减轻重新初始化 Activity 的负担。该 fragment 可以包含对要保留的有状态对象的引用。
当Android系统由于配置更改而关闭您的 Activity 时,您标记为保留的 Activity fragment 不会被破坏。您可以将此类 fragment 添加到 Activity 中以保留有状态对象。
要在运行时配置更改期间将状态对象保留在 fragment 中,请执行以下操作:
1-扩展Fragment类,并声明对您的有状态对象的引用。
创建 fragment 时2-调用setRetainInstance(boolean)。
3-将 fragment 添加到您的 Activity 中。
4-重新启动 Activity 时,使用FragmentManager检索 fragment 。
更多详细信息是here