我有一个活动,可以通过单击按钮从不同的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
}
但这似乎不起作用。任何帮助表示赞赏。
答案 0 :(得分:0)
您需要在SharedPreferences中保存您的布尔值(在应用程序结束之间将保持不变)。
您当前的方法(使用onSavedInstance状态)仅在将应用程序发送到后台时才会起作用(或者当应用程序位于前台时旋转屏幕)。
您不能(也不应该)保存View对象 - 但可以轻松地将boolean保存在持久存储中(同样SharedPrefences会很好用),然后根据此状态重新创建视图。