Android:屏幕旋转后保存活动状态

时间:2016-04-21 09:53:35

标签: android layout rotation imageview screen-rotation

我们正在开发项目,以便创建一个应用程序来帮助自动交流。

事实上,在移动ImageViews之后,所有这些都在我的平板电脑旋转后恢复原状。

我们尝试了很多东西,最后我们制作了这段代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.repas);
    area1 = (LinearLayout) findViewById(R.id.area1);
    area2 = (LinearLayout) findViewById(R.id.area2);


    TypedArray arrayResources = getResources().obtainTypedArray(
            R.array.resicon);

    if( savedInstanceState != null ) {
        int count_item = savedInstanceState.getInt("number_of_item");
        int tab_item[] = new int[count_item];

        for (int i = 0; i < count_item; i++) {
            tab_item[i]=savedInstanceState.getInt("Sauvegarde_repas" +i);
        }

        for (int i = 0; i < arrayResources.length(); i++) {
            ImageView imageView = new ImageView(this);
            imageView.setImageDrawable(arrayResources.getDrawable(i));
            imageView.setOnTouchListener(myOnTouchListener);
            imageView.setId(i);


            if (check(tab_item,i)){
                area1.addView(imageView);
            }
            else{
                area2.addView(imageView);
            }
        }
    }
    else {

        for (int i = 0; i < arrayResources.length(); i++) {
            ImageView imageView = new ImageView(this);
            imageView.setImageDrawable(arrayResources.getDrawable(i));
            imageView.setOnTouchListener(myOnTouchListener);
            imageView.setId(i);
            area2.addView(imageView);
        }

        arrayResources.recycle();
    }

    area1.setOnDragListener(myOnDragListener);
    area2.setOnDragListener(myOnDragListener);
}

@Override
public void onSaveInstanceState(Bundle outState)
{
    int count = area1.getChildCount();
    View v = null;
    outState.putInt("number_of_item", count);
    for(int i=0; i<count; i++) {
        v = area1.getChildAt(i);
        outState.putInt("Sauvegarde_repas" + i, v.getId());
    }
    super.onSaveInstanceState(outState);
}

以下是我的讯问:

当我设置ID时,它只是&#34; i&#34;,一个非常简单的数字。它看起来并不像字符串那么独特&#34; R.id.String_here&#34; (即使我知道它是用Integer转换的),那么我怎么能确定一个唯一的ID呢?

我必须一个接一个地保存我布局的孩子吗?保存整个布局是不可能的? 您有什么建议来改进我的代码吗? (因为它看起来很脏,不是吗?)

非常感谢你的帮助!

0 个答案:

没有答案