我有一個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