保存膨胀的视图

时间:2014-07-03 22:29:31

标签: android

我有一个活动,可以通过单击按钮从不同的XML中扩展TextView,Button。因此,重复单击时会创建多个TextView和Button视图。我想保存生成的布局的当前状态,因此在下次启动应用程序时,它会显示先前膨胀的视图。目前,当重新启动应用程序时,会删除膨胀的视图。

有没有办法保存膨胀的布局?

我尝试在onCreate方法之前初始化一个布尔值。

private Boolean b=false;

然后在按钮的onclick方法中将其设置为True。

然后按如下方式覆盖onSaveInstance方法:

public void onSaveInstanceState(Bundle savedInstanceState) 
{
super.onSaveInstanceState(savedInstanceState);
savedInstanceState.putBoolean("inflate", b);
}

然后按如下方式覆盖onRestoreInstanceState方法:

public void onRestoreInstanceState(Bundle savedInstanceState) 
{
super.onRestoreInstanceState(savedInstanceState);
Boolean z = savedInstanceState.getBoolean("inflate");
if (z == true)
     onClick(btn);//Here btn==button view of the button clicked to inflate the layout
}

但这似乎不起作用。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

您需要在SharedPreferences中保存您的布尔值(在应用程序结束之间将保持不变)。

您当前的方法(使用onSavedInstance状态)仅在将应用程序发送到后台时才会起作用(或者当应用程序位于前台时旋转屏幕)。

您不能(也不应该)保存View对象 - 但可以轻松地将boolean保存在持久存储中(同样SharedPrefences会很好用),然后根据此状态重新创建视图。