我有一個繪畫活動,其中選擇從調色板我打開一個DialogFragment
的顏色。
英鎊
我第一次打開DialogFragment
,我instatiate的bnColor對象,我給它的第一個按鈕的價值,所以,在調色板,第一個按鈕會出現作爲選擇,這是我會畫的顏色。
但是,如果我然後在調色板中選擇另一種顏色,下次再次進入調色板時,我希望這種新顏色顯示爲選定的顏色。取而代之的是,總是選擇第一種顏色。
我知道這是因爲每次輸入DialogFragment
時,bnColor對象都爲null,所以它總是獲得第一個顏色的值。爲了解決這個問題,我需要做一些事情,比如保存bnColor對象的最後一個狀態,所以當我輸入dialogFragment的時候,它會檢查是否是第一次,它是空的,或者我之前輸入並且有一個前一個值保存。
但我從來沒有做過這樣的事情,我不知道該怎麼做。
這是dialogFragment相關代碼:
private ImageButton bnColor;
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
LayoutInflater inflater = LayoutInflater.from(getActivity());
View view = inflater.inflate(R.layout.palette, null, false);
if (bnColor == null) {
LinearLayout drawLayout = (LinearLayout) view.findViewById(R.id.paint_colors);
bnColor = (ImageButton) drawLayout.getChildAt(0);
bnColor.setImageDrawable(getResources().getDrawable(R.drawable.button_pressed));
}
1)onSaveInstanceState什麼也不做。因此它無法工作。 2)在大多數情況下,savedInstanceState將爲空。只有當系統重新創建對話框時,它纔會爲空,而不是在您解散並顯示它時。 –
@Doctoror Drive可以提供一個新答案的解決方案嗎? – masmic
@ masmic_87在SharedPreferences中保存顏色並將其恢復到onCreateDialog。 –