我有一个Android应用程序,允许用户动态地将自己的按钮添加到布局。我需要做到这一点,一旦应用程序关闭并重新打开,这个动态添加的按钮将返回到布局。而不是加载默认布局。保存整个活动状态
目前,我在动态通过应用程序的动作条添加按钮:
if (id == R.id.add_button)
{
String string = "Adding Button in Progress";
Toast.makeText(getApplicationContext(), string, Toast.LENGTH_SHORT).show();
Button myButton = new Button(this);
myButton.setText("Button");
RelativeLayout layout = (RelativeLayout)findViewById(R.id.Layout1);
layout.addView(myButton);
//myButton.setVisibility(View.VISIBLE);
return true;
}
这将创建按钮正常,但是当应用程序被关闭并重新打开,它启动时的默认布局。
我已经做了一些研究,让应用程序保存并重新加载更新的布局。看来我需要使用onSaveInstanceState。以下是我迄今为止在试图保存布局方面:
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
// Save the app state here:
savedInstanceState.putAll(savedInstanceState);
super.onSaveInstanceState(savedInstanceState);
}
这里是我在试图“重新载入/恢复”方面说布局。请注意,我没有使用onRestoreInstanceState,代替我做它通过onCreate方法:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
// Check whether we're recreating a previously destroyed instance
if (savedInstanceState != null) {
// Restore value of members from saved state
//savedInstanceState.get(savedInstanceState);
}
else
{
//initialize members with default values for a new instance
setContentView(R.layout.activity_main);
}
}
我不知道如果我保存/加载正确的,但我怎么能完成这一任务的任何建议将不胜感激。
谢谢你的时间!
P.S.我仍然是一个相当新的成员,所以我不能在现有的线程上发表评论/提出问题。
我知道有很多关于尝试加载/保存布局的信息,但在我的情况下,我需要它来保存按钮,而不是一串用户文本。换句话说,它不是我需要保存的固定值。如果用户添加了n个按钮,当应用退出并重新启动时,它应该具有相同的3个按钮。
ViewStub和SharedPreferences的组合将解决您的问题。 – VVB
@VVB: \t 感谢您的回复。我之前尝试过查看SharedPreferences,但由于我不确定如何将活动状态(即最近添加的按钮)表示为SharedPreferences似乎需要的键值对,而被拒绝。 – organizedchaos