2014-07-03 108 views
0

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

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

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

private Boolean b=false; 

然后,它在按钮的onclick方法设置为True。

然后overrid onSaveInstance方法如下:

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

然后overrid的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 
} 

但这似乎并没有工作。任何帮助表示赞赏。

回答

0

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

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

您不能(也不应该)保存View对象 - 但可以很容易地将布尔值保存在持久性存储中(再次SharedPrefences将工作得很好),然后基于此状态重新创建视图。