我制作了一个应用程序,每次按下按钮时,我都会动态地向 LinearLayout
添加和删除 textView。
我的问题是,当屏幕方向改变时, Activity 重新启动,所有添加的 textView 都消失了。我不知道如何保留 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 类并声明对有状态对象的引用。
2-创建 fragment 时调用 setRetainInstance(boolean)。
3-将 fragment 添加到您的 Activity 中。
4-在 Activity 重启时使用 FragmentManager 检索 fragment 。
更多细节是here
关于android - 配置更改后如何在android中保存膨胀的布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32292998/