我制作了一个应用程序,每次按下按钮时,我都会在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

10-07 19:30
查看更多